使用jquery进行整数比较时遇到问题

Getting trouble with integer comparison using jquery

本文关键字:遇到 问题 比较 整数 jquery 使用      更新时间:2023-09-26

我有以下代码

<input type="text" id="max_marks" name="max_marks" value="100">            
<input type="text" id="marks" name="marks" value="75" >
        <script type="text/javascript">
            $(document).ready(function(){
                $('#marks,#max_marks').change(function(){
                    var mm=$('#max_marks').val();
                    var m=$('#marks').val();
                    if(parseInt(mm,10) > parseInt(m,10))
                    {
                     alert("Maximum marks greater than obtained marks");   
                    }                        
                }).change(); 
            });
        </script>

当最大标记数小于获得的标记数时,将触发警报。我哪里做错了?

有时我们无法预测客户端脚本语言(如jQuery和Javascript)的流量

 <input type="text" id="max_marks" name="max_marks" value="100"><span></span>
 <input type="text" id="marks" name="marks" value="50" ><span></span>
        <script type="text/javascript">
            $(document).ready(function(){
                function isNumberInt10(n) {
                         return !isNaN(parseInt(n,10)) && isFinite(n);
                        }
                function isValidMarks(m,n){
              if(parseInt(m) <= parseInt(n))
                    {   
                             return true;
                    }
                }        
                $('#max_marks').change(function(){
                 var mm=$('#max_marks').val();
                    if (!isNumberInt10(mm)) {
                        $('#max_marks').next().text('Enter valid marks');
                        $('#max_marks').attr('value','');
                        $('#max_marks').focus();
                        }
                   else
                    {
                        $('#max_marks').next().text('');
                        $('#max_marks').attr('value','');
                        $('#max_marks').focus();
                    }   
                    }).change(1000); 
           $('#marks').change(function(){        
                    var mm=$('#max_marks').val();
                    var m=$('#marks').val();
                  if (!isNumberInt10(m)) {
                        $('#marks').next().text('Enter valid marks');
                        $('#marks').attr('value','');
                        $('#marks').focus();
                        }
                   else
                    {    
                        $('#marks').next().text('');
                    }
                   if(isValidMarks(mm,m))
                    {   
                        $('#marks').next().text('Enter Valid obtained marks');
                        $('#marks').attr('value','');
                        $('#marks').focus();
                    }
                    else
                    {
                        $('#marks').next().text('');
                    }
                   }).change(1000);
            });
        </script>

编写的代码容易受到不正确的数字字符串的攻击。我建议这样修改:

function isNumberInt10(n) {
  return !isNaN(parseInt(n,10)) && isFinite(n);
}
$(document).ready(function(){
    $('#marks,#max_marks').change(function(){
        var mm, m;
        mm=$('#max_marks').val();
        if (!isNumberInt10(mm)) {
           alert("Max marks needs to be a number");
           return;
        }
        m=$('#marks').val();
        if (!isNumberInt10(m)) {
           alert("Marks needs to be a number");
           return;
        }
        if(parseInt(mm,10) > parseInt(m,10)) {
            alert("Maximum marks greater than obtained marks");   
        }                        
    }).change(); 
});