为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用jquery阻止或限制输入字段中的特殊字符?

如何使用jquery阻止或限制输入字段中的特殊字符?

梦里花落0921 2019-07-26 16:20:02
如何使用jquery阻止或限制输入字段中的特殊字符?如何使用jquery阻止特殊字符输入到输入字段?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

一个使用正则表达式的简单示例,您可以将其更改为允许/禁止您喜欢的任何内容。

$('input').on('keypress', function (event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }});


查看完整回答
反对 回复 2019-07-26
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

我一直在寻找一个限制输入仅限于字母数字字符的答案,但仍然允许使用控制字符(例如,退格键,删除键,制表符)和复制+粘贴。我尝试的答案都没有满足所有这些要求,所以我想出了以下使用该input事件。

$('input').on('input', function() {
  $(this).val($(this).val().replace(/[^a-z0-9]/gi, ''));});

编辑:
正如rinogo在评论中指出的那样,上面的代码片段在输入文本的中间键入时强制光标到输入的末尾。我相信下面的代码片段可以解决这个问题。

$('input').on('input', function() {
  var c = this.selectionStart,
      r = /[^a-z0-9]/gi,
      v = $(this).val();
  if(r.test(v)) {
    $(this).val(v.replace(r, ''));
    c--;
  }
  this.setSelectionRange(c, c);});


查看完整回答
反对 回复 2019-07-26
?
catspeake

TA贡献1111条经验 获得超0个赞

简短回答:阻止'按键'事件:

$("input").keypress(function(e){
    var charCode = !e.charCode ? e.which : e.charCode;

    if(/* Test for special character */ )
        e.preventDefault();})

答案长:使用像jquery.alphanum这样的插件

选择解决方案时需要考虑以下几点:

  • 粘贴文字

  • 上述代码可以防止像退格或F5这样的控制字符。

  • é,í,ä等

  • 阿拉伯语或中文......

  • 跨浏览器兼容性

我认为这个领域足够复杂,可以保证使用第三方插件。我尝试了几个可用的插件,但发现每个插件都有一些问题所以我继续写了jquery.alphanum。代码如下所示:

$("input").alphanum();

或者对于更精细的控制,添加一些设置:

$("#username").alphanum({
    allow      : "€$£",
    disallow   : "xyz",
    allowUpper : false});

希望能帮助到你。


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 1579 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信