2012-01-23 26 views
0

這是我第一週自學javascript,我遇到了問題。簡單的Javascript Onblur如果其他功能

我正在嘗試創建一個簡單的抵押貸款'價值'計算器。我的計算器工作正常,但我試圖爲我的兩個表單域中的一個設置最小值驗證。

這裏是頁面

Link

我的代碼如下

function calculate (form) { 
    var propVal = form.propertyValue.value; var loanAmt = 
    form.mortgageAmount.value; var type = form.mortgageType.value; 

    var ltv = loanAmt/propVal * 100 ; 

    var roundedLtv = Math.floor(ltv); 

    if (type === "First Time Buyer" && roundedLtv <= 91) { 
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> We can help place your mortgage"); 
    } 
    else if (type === "Moving Home" && roundedLtv <= 91) { 
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> We can help place your mortgage"); 
    } 
    else if (type === "Remortgage" && roundedLtv <= 86) {  
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> We can help place your mortgage"); 
    } 
    else if (type === "Buy To Let Purchase" && roundedLtv <= 81) { 
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> We can help place your mortgage"); 
    } 
    else if (type === "Buy To Let Remortgage" && roundedLtv <= 76) {  
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> We can help place your mortgage"); 
    } 
    else 
    {  
     document.getElementById("result").innerHTML= ("Your loan to value is: <b>" + (roundedLtv) + "%</b> <br /> Unfortunatly we cannot help you place a mortgage");  
    } 
} 

所有工作正常,直到這點,在那裏我試圖提醒用戶的是,貸款金額鏈接需要大於45000.在HTML中,您會看到我正在嘗試使用onBlur函數

function loancheck (propVal,loanAmt,form) {  
    if (loanAmt >= 45000) { 
     document.getElementById("val1").innerHTML= ("Thank You"); 
    } 
    else 
    {  
     document.getElementById("val1").innerHTML= ("Higher"); 
    } 
} 

這是HTML去用它

<form name="myform" ACTION="" METHOD="GET"> Mortgage Type 
    <select name="mortgageType"> 
     <option>First Time Buyer</option> 
     <option>Moving Home</option> 
     <option>Remortgage</option> 
     <option>Buy To Let Purchase</option> 
     <option>Buy To Let Remortgage</option> 
    </select> 

    <br /> 
    Value <input name="propertyValue" type="text" value=""/><br /> 

    Mortgage Amount <input name="mortgageAmount" type="text" value="" onBlur="loancheck(this.value)" /> 

    <p id="val1"></p> 

    <INPUT TYPE="button" NAME="button" Value="Click" onClick="calculate(this.form)"> 
</form> 

<br /><br /> 
<p id="result"> </p> 

我敢肯定,我在做什麼根本性的錯誤,但如果有人能指出來給我,我將是最感謝。

+0

這裏有什麼問題? '#val1'中沒有消息顯示?請澄清有問題。 – paislee

+0

是的,val1中沒有顯示任何消息。 –

+0

感謝以下所有耐心回答我的問題的人!我欠你全部 –

回答

1

當調用loancheck時,變量loanAmt未定義,因爲沒有足夠的參數傳遞給該函數。考慮按以下方式清理函數定義:

function loancheck (loanAmt) { // remove unused parameters 
    var userAlert = document.getElementById("val1") // don't repeat yourself 
    if (loanAmt >= 45000) { 
     userAlert.innerHTML= "Thank You"; // remove extraneous parens 
    } else { 
     userAlert.innerHTML= "Higher"; 
    } 
} 
+0

謝謝你! –

0

當你調用loancheck你這樣做:

loancheck(this.value) 

然而,loancheck有三個參數:

function loancheck (propVal,loanAmt,form) 

由於loanAmtcalculate函數內的私有變量,你需要調用先計算然後返回loanAmt。或者,使loanAmt成爲全局變量,並在用戶更改適當的字段時更新它。

0

你沒有說實際發生了什麼:) 但我看到你的loancheck函數需要3個變量。你的onblur處理函數傳遞一個變量,但你的函數期望第二個變量「loanAmt」在那裏。說得通?

0

你調用的onblur

loancheck(THIS.VALUE),但你的函數定義有loancheck(PROPVAL,loanAmt,形式)。

您正在傳遞一個將副本傳遞給proVal的值。

loadnAmt,form是未定義的。