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

間違った値と比較しています。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);
  }
  });
于 2013-04-11T10:25:37.940 に答える
1

問題は比較にあります。値を maxMarks[0] ではなく maxMarks と比較します。

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 に答える