文本区域的 jQuery 输入过滤器
我将此解决方案改编到我的脚本中。这个想法是为了防止用户输入未经授权的字符(当然后端也有一个过滤器)。
$('#someinput').keyup(function() {
var $th = $(this);
$th.val( $th.val().replace(/[^a-zA-Z0-9]/g, function(str) {
console.log(str);
return '';
}))
})
它工作得很好,但我还需要用户能够输入特定的允许字符,例如:.,!?ñáéíóú - 我的意思是,基本的 a-zA-Z0-9 加上一些基本字符和一大堆特殊语言字符。
实际上需要省略的是: @#$%^&*()=_+"':;/<>\|{}[]
有什么想法吗?谢谢!
解决方案感谢 迈克尔
//query
$('#someinput').keyup(function() {
var $th = $(this);
$th.val($th.val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
}).bind('paste',function(e) {
setTimeout(function() {
$('#someinput').val($('#someinput').val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
$('#someinput').val($('#someinput').val().replace(/\s+/g,' '));
},100);
});
I adapted this solution into my script. The idea is to prevent the user from typing unauthorized characters (of course there is also a filter on the back end).
$('#someinput').keyup(function() {
var $th = $(this);
$th.val( $th.val().replace(/[^a-zA-Z0-9]/g, function(str) {
console.log(str);
return '';
}))
})
It works nice, but I also need the users to be able to type specific allowed characters like: .,!?ñáéíóú - I mean, the basic a-zA-Z0-9 plus some basic chars and the whole bunch of special language characters.
What actually needs to be left out are: @#$%^&*()=_+"':;/<>\|{}[]
Any ideas? Thanks!
Solution thanks to Michael
//query
$('#someinput').keyup(function() {
var $th = $(this);
$th.val($th.val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
}).bind('paste',function(e) {
setTimeout(function() {
$('#someinput').val($('#someinput').val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
$('#someinput').val($('#someinput').val().replace(/\s+/g,' '));
},100);
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
反转正则表达式以仅替换要省略的特定字符:
注意,其中一些字符需要在
[]
字符类中使用反斜杠进行转义:\\\[\] \^\/
Invert your regular expression to only replace the specific characters you want omitted:
Note, a few of them need to be escaped with a backslash inside a
[]
character class:\\\[\]\^\/
如果我理解您想要做什么,您不能只将这些不需要的字符添加到正则表达式中而不是执行
[^a-zA-Z0-9]
吗?将其替换为
[@#\$%\^&\*\(\)=_\+"':;\/<>\\\|\{\}\[\]]< /code> (注意转义)
If I'm understanding what you are wanting to do, can't you just add those unwanted characters to your regex instead of doing the
[^a-zA-Z0-9]
?Replace that with
[@#\$%\^&\*\(\)=_\+"':;\/<>\\\|\{\}\[\]]
(notice the escaping)