【问题标题】:jQuery keypress function not working properlyjQuery按键功能无法正常工作
【发布时间】:2017-08-05 07:00:09
【问题描述】:

我正在对 UI 进行一些更改,如果用户从下拉列表中选择 TX,则文本框应仅接受最多 10 个字符的数字,否则如果用户选择 NY,则用户可以输入最多 15 个字符的字母数字,代码仅适用于第一次。然后对于任何选择,文本框只接受数字(无论选择如何)。 JSfiddle 链接如下:

https://jsfiddle.net/narendrak/t9n9hbgc/1/

代码sn-p如下:

  <input type="text" tabindex="7" maxlength="10" size="18" name="stateinfo"      id="stateinfo" style="text-transform: uppercase;" value="" disabled />
    <select name="states" id="states" value="State">  
    <option value="State">State</option>
    <option value="NY">NY</option>
    <option value="TX">TX</option>
    </select>

JS 代码:

$(document).ready(function() {
  $('#states').change(function() {
    var dropdown = $("#states").val();
    if (dropdown == "State") {
      $("#stateinfo").val("");
      $("#stateinfo").attr('disabled', 'disabled');
    } else if (dropdown == "TX") {
        $('#stateinfo').keypress(function(e) {
        var regex = new RegExp("^[0-9]+$");
        var num = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(num)) {
          return true;
        }
        e.preventDefault();
        return false;
      });
      $("#stateinfo").removeAttr('disabled');
      $("#stateinfo").val("");
      $("#stateinfo").attr("maxlength", "10");
    } else {
      $('#stateinfo').keypress(function(e) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
          return true;
        }
        e.preventDefault();
        return false;
      });
      $("#stateinfo").removeAttr('disabled');
      $("#stateinfo").val("");
      $("#stateinfo").attr("maxlength", "15");
    }
  });
});

感谢任何帮助。

【问题讨论】:

    标签: javascript jquery user-interface closures jquery-events


    【解决方案1】:

    你只需要 UNBIND 一个处理程序

     $(document).ready(function() {
      $('#states').change(function() {
    
        $( "#stateinfo").unbind( "keypress" );
    
        var dropdown = $("#states").val();
        if (dropdown == "State") {
          $("#stateinfo").val("");
          $("#stateinfo").attr('disabled', 'disabled');
        } else if (dropdown == "TX") {
            $('#stateinfo').keypress(function(e) {
            var regex = new RegExp("^[0-9]+$");
            var num = String.fromCharCode(!e.charCode ? e.which : e.charCode);
            if (regex.test(num)) {
              return true;
            }
            e.preventDefault();
            return false;
          });
          $("#stateinfo").removeAttr('disabled');
          $("#stateinfo").val("");
          $("#stateinfo").attr("maxlength", "10");
        } else {
          $('#stateinfo').keypress(function(e) {
            var regex = new RegExp("^[a-zA-Z0-9]+$");
            var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
            if (regex.test(str)) {
              return true;
            }
            e.preventDefault();
            return false;
          });
          $("#stateinfo").removeAttr('disabled');
          $("#stateinfo").val("");
          $("#stateinfo").attr("maxlength", "15");
        }
      });
    });
    

    【讨论】:

    • 非常感谢,你拯救了我的一天。
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2015-02-12
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多