2013-04-02 62 views
0

我在驗證時遇到了一些麻煩。在這裏,一個輸入被檢查,它是一個數字,不是=沒有,並且它大於或等於3,小於或等於12. 由於某些原因,我只能成功驗證第一個部分。我無法獲得「> 3 = & & < = 12」的工作,請幫忙。jquery javascript verify

}else if(question_pos==2){ 
     if($("#myinput").val() != "" && Number($("#myinput").val()) && $("#myinput").val() >= "3" && $("#myinput").val() <= "12"){ 
     return true; 
    }else{ 
     return false; 
    } 

這是問題的一部分

$("#baseline_05_ft").val() >= "3" && $("#baseline_05_ft").val() <= "12" 
+0

試圖把在括號..'$( 「#myinput」)。VAL()!= 「」 &&($(「# myinput「)。val()> =」3「&& $(」#myinput「)。val()<=」12「)' – kingkode

+0

這個我試過了,它對我沒有用。無論如何,我都會返回錯誤。 – user2089255

+0

和Number($(「#myinput」)。val()工作得很好。 – user2089255

回答

0

首先用JavaScript,你應該在做邏輯比較時使用===運算符。其次你的問題部分是比較兩個字符串,而不是數字。嘗試先將它們轉換爲數字。

var myInput = parseInt($('#myinput').val(), 10); //always declare a base when doing parseint 
if(myInput >= 3 && myInput <= 12){ 
    //its valid do stuff to it 
} 
+0

你忘了使用'== ==','==='的對應物,而且我發現不需要與'0'比較,因爲它在範圍之外 – Halcyon

+0

'====' 4 eqs?你確定嗎? – ShuklaSannidhya

+0

謝謝你指出錯誤。 – Kyle

2

你的代碼是凌亂的,這可能是什麼原因造成的錯誤。

寫像這樣:

var value = parseInt($("#myinput").val(), 10 /*radix*/); 
if (isNaN(value) === false && value >= 3 && value <= 12) { 
    // .. 
} 

根本不比較,你的意思是數字的字符串。比較你應該比較的內容。它使代碼更易於閱讀和理解。


這也允許您使用嚴格比較(!=====)爲:

3 === 3; // true 
3 === "3"; // false 
3 == "3"; // true 

我從來沒有找到您要使用==,而不是===的情況下。

+0

我不認爲他的亂碼是錯誤的_reason_,而是他對JavaScript中如何做邏輯比較缺乏理解 – Kyle

0

您正在比較字符串,而不是數字。沒有任何值在詞彙上大於"3…",但低於"1…"

if (question_pos==2) { 
    var strVal = $("#myinput").val(); 
    var val = Number(strVal); 
    return strVal != "" && !isNaN(val) && val >= 3 && val <= 12; 
} 
1

你應該將其轉換爲integers-

var myVal = parseInt($("#myinput").val(), 10); 
if(!isNaN(myVal) && myVal >= 3 && myVal <= 12) { 
    //do stuff 
} 
+1

當你使用parse int'parseInt(string,base)'的時候,你應該總是使用一個基本參數,否則當你的意思是十進制時,javascript可能會錯誤地解釋你的字符串是八進制的。 – Kyle

+0

「misinterpret」?是不是默認爲10? –

+0

@凱爾謝謝。我已經更新了它。 – ShuklaSannidhya

相關問題