2013-04-11 32 views
0

我在檢查學生標記輸入字段中的標記時遇到奇怪的驗證錯誤。jQuery驗證在更改特定設置值時失敗

輸入id保持最大分數與輸入值進行比較(在當前情況下爲35)。因此,如果用戶輸入的值小於35或35,則其可接受但不大於35 ..但在當前情況下,其值爲100或更大。

保持簡單和短期,我HTML是這樣的 -

<input type="text" value="30" id="studentname[98989898][marks-35_compid-1_subid-12]" name="studentname[98989898][marks-35_compid-1_subid-12]" style="width:50px;text-align:center"> 

的jQuery碼 -

jQuery(document).ready(function() { 
     jQuery("input[type='text']").on('change', function(event) { 
     var colId = event.target.id; 
     var maxMarksSplit=colId.split("marks-"); 
     var maxMarks = maxMarksSplit[1].split("_compid"); 
     alert("Max marks " + maxMarks[0]); 
     if(jQuery(this).val() > maxMarks[0]) 
     { 
     alert("Please check your value!"); 
     jQuery(this).val(0); 
     } 
     }); 
}); 

工作撥弄DEMO - >http://jsfiddle.net/swapnesh/ktKE3/

測試傳遞值小於100但它fa ils的值大於或等於100

讓我知道這個奇怪的驗證行爲,以及我在邏輯上做錯了什麼。

回答

1

「parseFloat」 可能會有所幫助

試試這個

jQuery(document).ready(function() { 
    jQuery("input[type='text']").on('change', function(event) { 
    var colId = event.target.id; 
    var maxMarksSplit=colId.split("marks-"); 
    var maxMarks = maxMarksSplit[1].split("_compid"); 
    alert("Max marks " + maxMarks[0]); 
    if(parseFloat(jQuery(this).val()) > parseFloat(maxMarks)) 
    { 
    alert("Please check your value!"); 
    jQuery(this).val(0); 
    } 
    }); 
}); 
+0

感謝您成爲第一個準確的+1和綠色勾號:) – swapnesh 2013-04-11 10:31:25

1

你比較錯誤的值。 maxMarks是拆分數組,您想要與maxMarks [0]進行比較。

此外,您還需要解析的投入,因爲他們倆拉爲字符串:

jQuery("input[type='text']").on('change', function(event) { 
    var colId = event.target.id; 
    var maxMarksSplit=colId.split("marks-"); 
    var maxMarks = maxMarksSplit[1].split("_compid"); 
    alert("Max marks " + maxMarks[0]); 
    if(parseInt(jQuery(this).val()) + parseInt(maxMarks[0])) 
    { 
     alert("Please check your value!"); 
     jQuery(this).val(0); 
    } 
    }); 
+0

第一個案例是一個錯字,但parseInt幫助..謝謝+1 :) – swapnesh 2013-04-11 10:29:48

1

問題是位於你比較,你maxMarks代替maxMarks [0]

比較你的價值
jQuery(document).ready(function() { 
    jQuery("input[type='text']").on('change', function(event) { 
    var colId = event.target.id; 
    var maxMarksSplit=colId.split("marks-"); 
    var maxMarks = maxMarksSplit[1].split("_compid"); 
    alert("Max marks " + maxMarks[0]); 
    if(jQuery(this).val() > parseInt(maxMarks[0])) // Here the modification 
    { 
    alert("Please check your value!"); 
    jQuery(this).val(0); 
    } 
    }); 

});

+0

對不起,這是一個錯字..雖然它仍然不工作..爲parseInt +1 – swapnesh 2013-04-11 10:28:21