【问题标题】:I want javascript to validate the number type and select only integers before calling out the function [duplicate]我希望javascript在调用函数之前验证数字类型并只选择整数[重复]
【发布时间】:2018-10-07 21:34:40
【问题描述】:

Degree <input type="number" name="Degree" min="0" step="1"/ size="4" id="Degreelat">

希望这个度数在 javascript 中调用我的函数之前只采用正整数而不接受十进制值。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    仅对正整数使用 Jquery

    //for allow only positive integers
    $(document).ready(function(){
    
            $("#returnRetailQuantity").keydown(function (event) {
                if (event.shiftKey) {
                    event.preventDefault();
                }
    
                if (event.keyCode == 46 || event.keyCode == 8) {
                }
                else {
                    if (event.keyCode < 95) {
                        if (event.keyCode < 48 || event.keyCode > 57) {
                            event.preventDefault();
                        }
                    }
                    else {
                        if (event.keyCode < 96 || event.keyCode > 105) {
                            event.preventDefault();
                        }
                    }
                }
            });
    });
    

    【讨论】:

    • 你能不使用 Jquery 帮助我吗?
    • 你可以简单地使用这个
    【解决方案2】:

    <input type="number" name="Degree" min="0" step="1"/ size="4" id="Degreelat" onkeydown="return ( event.ctrlKey || event.altKey 
       || (47<event.keyCode && event.keyCode<58 && event.shiftKey==false) 
       || (95<event.keyCode && event.keyCode<106)
       || (event.keyCode==8) || (event.keyCode==9) 
       || (event.keyCode>34 && event.keyCode<40) 
       || (event.keyCode==46) )">

    您可以通过验证和禁用各种导航和热键来验证 onKeyDown 事件 javascript...例如逗号、点、字母...

    【讨论】:

      【解决方案3】:

      一个简单的解决方案是白名单数字键代码(使用 Jquery):

      $(document).ready(function() {
      $("#Deareelat").keydown(function (e) {
          if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
              e.preventDefault();
          }
      });
      });
      

      但您可能还想允许其他一些键(例如退格)这里是键代码列表:

      https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

      【讨论】:

      • 不使用 Jquery 是否可行?
      • 确保您可以使用 javacript 选择器并在您的输入 tad 上添加 onkeydown 方法并使用纯 js 编写此函数
      【解决方案4】:

      验证输入是您的 JavaScript 函数的职责。要么你有一个显式调用这个函数的按钮,要么有一个触发函数的 onblur 或 onchange 事件,我们来看看函数本身:

      function checkvalue(){
        var value=document.getElementById('Degreelat').value;
        var val=parseInt(value,10);
        if (val!=value) return false;
        if (val<=0) return false;   
      }
      

      如果要检查多个字段,可以抽象一个辅助函数,用它来指示哪个字段无效:

      function valint(id){
        var value=document.getElementById(id).value;
        if (!parseInt(value,10)!=value) {
          document.getElementById(id).style.background='red';
          return false;
        }
      
        document.getElementById(id).style.background='transparent';
        return true;
      
      }
      
      function checkvalues(){
        var valid=true;
      
        if (!valint('Degreelat')) valid=false;
        if (!valint('Degreelng')) valid=false;
      
        return valid;
      }
      

      【讨论】:

      • 我确实有一个用于调用我的功能的按钮。但是我是否需要单独使用此代码验证纬度和经度的所有度数和秒数?
      • 我已编辑答案以反映多个字段。如果您需要确保 lat-lng 输入的正确格式,您可能希望使用正则表达式,而不是在单独的字段中强制使用整数。
      • 它不工作。
      • 哪一部分出乎意料?有任何错误信息吗?
      • 否,但它仍然接受十进制值来提供输出。
      猜你喜欢
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多