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

萧十郎
TA贡献1815条经验 获得超13个赞
一个使用正则表达式的简单示例,您可以将其更改为允许/禁止您喜欢的任何内容。
$('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; }});

红糖糍粑
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);});

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});
希望能帮助到你。
- 3 回答
- 0 关注
- 1638 浏览
添加回答
举报
0/150
提交
取消