我正在尝试将输入限制为字母数字,0-9,A-Z,a-z。
我正在引用的ASCII表:http://www.asciitable.com/ 这是我到目前为止所拥有的
$(function() {
$("input").bind("keydown paste", function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
var c = code;
var letterAllowed = ((c > 47 && c < 58) || (c > 64 && c < 90) || (c > 96 && c < 123))
if (code > 32 && !letterAllowed) {
return false;
}
});
});
现在,阻止了波浪号(〜)字符输入到字段中,但是其他特殊/移位字符,例如!@#$%all都会输入到文本字段中。 我很确定我的逻辑是合理的,但我的问题是对javascript绑定的一些误解? IDK的
答案 0 :(得分:2)
仅在某些情况下防止字符输入在javascript中非常复杂,如keypress
event(您要阻止的那个),您不知道输入的后续value
,但是只有按下的键的keycode
(甚至不是结果的char)。此外,您需要关注特殊键,如。
我建议这样的事情:
$("input").on("keypress keyup paste", function(e) {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});
答案 1 :(得分:1)
如果限制您输入的字符,您可以替换不是字母数字的字符。
<input type='text' id="txtAlphaNumeric"/>
<input type='text' id="txtNumeric"/>
<input type='text' id="txtAlphabet"/>
<script type="text/javascript">
$(function() {
$('#txtNumeric').keyup(function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
$('#txtAlphabet').keyup(function() {
if (this.value.match(/[^a-zA-Z]/g)) {
this.value = this.value.replace(/[^a-zA-Z]/g, '');
}
});
$('#txtAlphaNumeric').keyup(function() {
if (this.value.match(/[^a-zA-Z0-9]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
}
});
});
</script>
答案 2 :(得分:0)
原来,我需要做以下事情:
$("input").keypress(function(e){
var code = e.charCode;
charCode将给出键入字母的实际字符代码,而不是最后按下的键的ascii代码