Javascript jQuery按键功能工作不正常

Javascript jQuery按键功能工作不正常,javascript,jquery,user-interface,closures,jquery-events,Javascript,Jquery,User Interface,Closures,Jquery Events,我在UI中做了一些更改,如果用户从下拉列表中选择TX,则文本框应只接受最多10个字符的数字,否则如果用户选择NY,则用户可以输入最多15个字符的字母数字,代码仅在第一次正常工作。然后,对于任何选择,文本框只接受数字(与选择无关)。JSFIDLE链接如下所示: 代码片段如下所示: <input type="text" tabindex="7" maxlength="10" size="18" name=&q

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

代码片段如下所示:

  <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>

非常感谢您的帮助。

您只需解除绑定处理程序即可

 $(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");
    }
  });
});

非常感谢,你救了我一天。
 $(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");
    }
  });
});