-
萧十郎
一个使用正则表达式的简单示例,您可以将其更改为允许/禁止您喜欢的任何内容。$('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;
}});
-
红糖糍粑
我一直在寻找一个限制输入仅限于字母数字字符的答案,但仍然允许使用控制字符(例如,退格键,删除键,制表符)和复制+粘贴。我尝试的答案都没有满足所有这些要求,所以我想出了以下使用该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
简短回答:阻止'按键'事件:$("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});希望能帮助到你。