Javascript 如何防止用户使用jQuery在文本框中输入特定字符?
我有一个正则表达式,它将与用户的按键匹配。我被它缠住了 这是我目前的代码:Javascript 如何防止用户使用jQuery在文本框中输入特定字符?,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我有一个正则表达式,它将与用户的按键匹配。我被它缠住了 这是我目前的代码: <script type="text/javascript"> $('input.alpha[$id=tb1]').keydown(function (e) { //var k = e.which; //var g = e.KeyCode; var k = $(this).val(); //var c = String.fromCharC
<script type="text/javascript">
$('input.alpha[$id=tb1]').keydown(function (e) {
//var k = e.which;
//var g = e.KeyCode;
var k = $(this).val();
//var c = String.fromCharCode(e.which);
if (k.value.match(/[^a-zA-Z0-9 ]/g)) {
e.preventDefault();
}
});
</script>
$('input.alpha[$id=tb1]').keydown(函数(e){
//var k=e,其中;
//var g=e.KeyCode;
var k=$(this.val();
//var c=String.fromCharCode(e.which);
如果(k值匹配(/[^a-zA-Z0-9]/g)){
e、 预防默认值();
}
});
这里的目标是防止用户键入正则表达式中的字符。您使用
keypress
而不是keydown
,并阻止默认操作
例如,这可以防止在文本输入中键入w
:
$("#target").keypress(function(e) {
if (e.which === 119) { // 'w'
e.preventDefault();
}
});
|
更新:如果应用正则表达式给您带来麻烦:
$("#target").keypress(function(e) {
if (String.fromCharCode(e.which).match(/[^A-Za-z0-9 ]/)) {
e.preventDefault();
}
});
|尝试使用以下方法:
“这是IE9上的错误消息。”:在哪里?为什么
k.value
,当k=$(this.val()
?你检查过重复的吗?我相信在这方面也有很多类似的问题。看,还有更多……我一直在调整代码,这就是它有点混乱的原因。我想做的是,如果用户在键盘上按了一个字符,它与正则表达式匹配,它将阻止默认值。@randelramirez1:我的答案有什么不清楚的地方需要我澄清吗?@randelramirez1脚本的主要问题是,$(this).val()
是按下键之前输入的值,这意味着你不必检查最后一个按下的键..这只有一个问题。它也会阻止退格键。@MichaelS.Miller如果您也想保留退格,只需将\x08
添加到正则表达式:/[^a-zA-Z0-9\x08]/g
。
$(document).ready(function () {
$('#tb1').keydown(function (e) {
var k = String.fromCharCode(e.which);
if (k.match(/[^a-zA-Z0-9]/g))
e.preventDefault();
});
});