我想允许除数字以外的所有字符。我在jquery下面写了。
$(".no-numbers").keypress(function(e){
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57))
{
swal({
title: "",
text: "Numbers are not allowed"
});
return false;
}
else
{
return true;
}
});
上面的代码不接受任何内容...请帮助!
答案 0 :(得分:2)
尝试以下操作:
$(".no-numbers").keypress(function(e){
var key = e.keyCode;
if (key >= 48 && key <= 57) {
swal({
title: "",
text: "Numbers are not allowed"
});
return false;
}
else
{
return true;
}
});
或者您可以使用正则表达式,例如:
var regex = new RegExp("^[a-zA-Z\s]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
// do your stuff here
}
答案 1 :(得分:1)
引用How to find out what character key is pressed?;
您可以将按键转换为实际值,然后使用e.preventDefault()忽略输入。
$(".no-numbers").keypress(function(e) {
var numbers = ['0','1','2','3','4','5','6','7','8','9'];
var keynum;
if (window.event) { // IE
keynum = e.keyCode;
} else if (e.which) { // Netscape/Firefox/Opera
keynum = e.which;
}
if (numbers.indexOf(String.fromCharCode(keynum)) > -1) {
alert("No numbers please.");
e.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="no-numbers">
答案 2 :(得分:1)
看起来像您的if语句错误
看看这个沙盒https://codesandbox.io/s/91wrqorl7o
if (e.which >= 48 && e.which <= 57) {
console.log("Not accepted is a Numbers");
return false;
} else {
console.log("Accepted not a number");
return true;
}
答案 3 :(得分:1)
您的条件是错误的。
您必须测试从48到57的键控代码。还要测试从96到105的键区号。
您的原始情况说明:
(e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57))
如果密钥不是退格键(8)
AND
如果键不是...没有零密码!
AND
如果键在键码48下方或在键码57以下->这与您想要的相反!
$(".no-numbers").keydown(function(e){
if ( (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105) ){
swal({
title: "",
text: "Numbers are not allowed"
});
return false;
}
else
{
return true;
}
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.28.5/sweetalert2.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.28.5/sweetalert2.min.js"></script>
<input class="no-numbers">
旁注...我总是倾向于使用keydown
事件(首先触发)来测试和“防止”键盘按下。