2014-11-24 88 views
-1

我需要使用小於或大於比較兩個值,但它不能正常工作。下面我的代碼。JavaScript比較運算符不工作

//JAVASCRIPT 
<script type="text/javascript"> 
function validform() 
{ 
    var balanvar = document.myform.balance.value, 
     currntvar = document.myform.currnt.value;  
    if(currntvar == "") { document.myform.currnt.focus(); document.getElementById("curntid").style.borderColor = "red"; return false; } // Must be filled error 
    if(currntvar > balanvar) { document.myform.currnt.focus(); document.getElementById("curntid").style.borderColor = "red"; return false; } else { document.getElementById("curntid").style.borderColor = "green"; } // Maximum value error 
} 
</script> 
//HTML 
<form name="myform" method="post" action=""> 
<input type="text" name="balance" id="balanceid" value="12000"/> 
<input type="text" name="currnt" id="curntid"/> 
<input type="submit" name="submit" value="Proceed" onclick="return validform();"/> 
</form> 

我想是的,我要進入比「currnt」文本框中輸入「平衡」值少,如果我進入最大值比較「平衡」文本框中的意思是,拋出的錯誤消息。

問題是,點擊繼續而沒有填充「currnt」時顯示錯誤。當在「currnt」中輸入值15000時表示其顯示錯誤。但是在「currnt」中輸入100000的值意味着它不給出錯誤。我不知道這是什麼錯誤。請幫幫我。

+0

可能重複http://stackoverflow.com/questions/6395777/basic-javascript-數學文本字段)。另見http://stackoverflow.com/questions/20604138/how-to-get-an-input-value-dynamically-and-perform-arithmetic-operations-using-ja,http://stackoverflow.com/questions/ 23258696/instantiate-a-variable-out-text-field-value-in-javascript,http://stackoverflow.com/questions/18614374/plus-arithmetic-operation等 – 2014-11-24 13:21:27

+0

問及多次回答。但實際上你甚至不需要爲此而來到SO。自己找到這個問題的答案並不比簡單地停止所討論的調試器,觀察'document.myform.balance.value'並注意它是一個字符串困難得多。 – 2014-11-24 13:23:24

+0

@torazaburo看到我只知道js的基本知識,我試過但無法識別錯誤。這就是爲什麼我在這裏問。 – Piruthvi 2014-11-24 14:50:02

回答

1

.value屬性返回一個字符串。因此您使用字符串比較來完成比較,大多數時間比數字比較產生其他結果。

爲了解決這個問題,轉換爲數字首先使用parseFloat()parseInt()

function validform() 
{ 
    var balanvar = parseFloat(document.myform.balance.value), 
     currntvar = parseFloat(document.myform.currnt.value);  
    if(isNaN(currntvar)) { document.myform.currnt.focus(); document.getElementById("curntid").style.borderColor = "red"; return false; } // Must be filled error 
    if(currntvar > balanvar) { document.myform.currnt.focus(); document.getElementById("curntid").style.borderColor = "red"; return false; } else { document.getElementById("curntid").style.borderColor = "green"; } // Maximum value error 
} 
[基本的JavaScript數學文本字段(的
+0

對不起,這段代碼完全不起作用,有什麼補充嗎?我的意思是jQuery庫? – Piruthvi 2014-11-24 12:41:17

+1

'currntvar ==「」'這裏讓我不舒服。它給人一個錯覺,即把'currnt.value'留空將會引起這個火災,它不會像'parseFloat(「」)=== NaN'那樣'!=「」' – CodingIntrigue 2014-11-24 12:42:01

+0

@Rraham我的錯誤 - 沒有閱讀足夠集中的代碼。修正了。 – Sirko 2014-11-24 12:44:06