我在检查来自学生标记输入字段的标记时遇到奇怪的验证错误。
输入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 - &gt; http://jsfiddle.net/swapnesh/ktKE3/
小于100
的值的测试通过但是对于大于或等于100
的值则失败。
让我知道这种奇怪的验证行为以及我在逻辑上做错了什么。
答案 0 :(得分: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);
}
});
});
答案 1 :(得分: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);
}
});
答案 2 :(得分: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);
}
});
});