【问题标题】:Disallowing unwanted characters in text input field with jQuery使用 jQuery 在文本输入字段中禁止不需要的字符
【发布时间】:2015-11-21 23:21:28
【问题描述】:

我正在使用此代码来防止用户在注册页面的用户名字段中输入任何空格。

$(function(){
   $('#username').bind('input', function(){
   $(this).val(function(_, v){
       return v.replace(/\s+/g, '');
       });
    });
});

但是有没有办法禁止除数字、大写和小写以外的所有字符?

所以用户可以输入的唯一字符是:

0123456789 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

【问题讨论】:

    标签: jquery forms replace textinput


    【解决方案1】:

    试试这个

    return v.replace(/[^a-zA-Z\d]/g, '');
    

    【讨论】:

    • 是的,这个工作并且仍然允许退格工作,谢谢;)
    【解决方案2】:
    v.replace(/[^a-zA-Z0-9 :]/g, "")
    

    应该做的伎俩

    【讨论】:

      【解决方案3】:
      $('#username').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;
      });
      

      https://stackoverflow.com/a/13237018/1017882

      编辑(允许退格):

      $('#username').keypress(function (e) {
          if (keyCode == 8 || (keyCode >= 35 && keyCode <= 40)) {
             return;
          }
      
          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;
      });
      

      新的if 条件检查按下的键是箭头、退格还是删除。如果是这样,那么代码的验证部分就没有任何意义了。

      【讨论】:

      • 啊,不是很完美,这会阻止退格键工作。有解决办法吗?
      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多