【问题标题】:JQUERY: How to reduce code if i have multiple fields that i control validationJQUERY:如果我有多个控制验证的字段,如何减少代码
【发布时间】:2017-06-07 11:08:13
【问题描述】:

例如,我有 3 个函数来控制每个字段的 keydown;最后我控制相同,所以我只想将 3 个字段与代码 1 一起放置。

ens_q_frio.keydown(function (event) {

    if (event.shiftKey == true) {
        event.preventDefault();
    }

    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {

    } else {
        event.preventDefault();
    }

    if ($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
        event.preventDefault();
});

ens_q_cal.keydown(function (event) {

    if (event.shiftKey == true) {
        event.preventDefault();
    }

    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {

    } else {
        event.preventDefault();
    }

    if ($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
        event.preventDefault();
});

ens_t_frio.keydown(function (event) {

    if (event.shiftKey == true) {
        event.preventDefault();
    }

    if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {

    } else {
        event.preventDefault();
    }

    if ($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
        event.preventDefault();
}); 

【问题讨论】:

    标签: javascript php jquery performance


    【解决方案1】:

    将 keydown 的参数作为一个单独的函数,然后直接传递它。如果您的字段在数组中,您也可以使用 forEach

    【讨论】:

      【解决方案2】:

      创建一个函数:

      function validate(event) {
        if (event.shiftKey == true) {
                  event.preventDefault();
              }
      
              if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {
      
              } else {
                  event.preventDefault();
              }
      
              if($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
                  event.preventDefault();
      }
      

      并将其传递给事件:

      ens_t_frio.keydown(validate);
      

      对其他输入做同样的事情。

      【讨论】:

      • 这个例子可以简化为ens_t_frio.keydown(validate);
      • 是的,谢谢指正,不用匿名功能也可以使用。片段已编辑。
      【解决方案3】:

      你可以把它放在一个函数中,并把它放在每个事件处理程序上。

      $(function(){
        $("#ens_q_frio").keydown(function(event){
           KeyDownEvent("ens_q_frio", event);
        });
        
        $("#ens_q_cal").keydown(function(event){    
          KeyDownEvent("ens_q_cal", event);
        });
        
         $("#ens_t_frio").keydown(function(event){
          KeyDownEvent("ens_t_frio", event);
         });
      })
      
      function KeyDownEvent(txtBox, event){
        if (event.shiftKey == true) {
          event.preventDefault();
        }
      
        if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {
      
        } 
        else {
          event.preventDefault();
        }
      
        if($("#" + txtBox).val().indexOf('.') !== -1 && event.keyCode == 190)
          event.preventDefault();
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <input type="text" id="ens_q_frio"/>
      <input type="text" id="ens_q_cal"/>
      <input type="text" id="ens_t_frio"/>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 2013-02-16
        相关资源
        最近更新 更多