0

在检查学生分数输入字段的分数时,我遇到了一个奇怪的验证错误。

输入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);
      }
      });
});

工作小提琴演示--> http://jsfiddle.net/swapnesh/ktKE3/

小于的值的测试通过,100但大于或等于的值则失败100

让我知道这种奇怪的验证行为以及我在逻辑上做错了什么。

4

3 回答 3

1

You're comparing to the wrong value. maxMarks is the split array, you want to compare to maxMarks[0].

Also, you need to parse the inputs as they'll both be pulled as strings:

  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);
  }
  });
于 2013-04-11T10:25:37.940 回答
1

The problem is located in your comparison, you compare your value with maxMarks instead of 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);
  }
  });

});

于 2013-04-11T10:25:40.630 回答
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);
  }
  });
});
于 2013-04-11T10:24:24.957 回答