我发现了一些类似的指令,但没有一个有用,所有这些都是特殊的字符或数字。
我需要使用户类型只有1,2,3,4,5,N,O,A,B,C。应限制所有其他字符。
我可以用任何方式自己选择限制/允许的字符作为输入吗?
试试这个
$(function(){
$('#txt').keypress(function(e){
if(e.which == 97 || e.which == 98 || e.which == 99 || e.which == 110 || e.which == 111 || e.which == 65 || e.which == 66 || e.which == 67 || e.which == 78 || e.which == 79 || e.which == 49 || e.which == 50 || e.which == 51 || e.which == 52 || e.which == 53){
} else {
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />
2018年3月9日更新
$(function(){
$('#txt').keypress(function(e){
// allowed char: 1 , 2 , 3, 4, 5, N, O, A, B, C
let allow_char = [97,98,99,110,111,65,66,67,78,79,49,50,51,52,53];
if(allow_char.indexOf(e.which) !== -1 ){
//do something
}
else{
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='txt' value='' onpaste="return false" />
使用JQuery,
$("input").keypress( function(e) {
var chr = String.fromCharCode(e.which);
if ("12345NOABC".indexOf(chr) < 0)
return false;
});
没有JQuery
document.getElementById("foo").onkeypress = function(e) {
var chr = String.fromCharCode(e.which);
if ("12345NOABC".indexOf(chr) < 0)
return false;
};
对于一个衬垫,来自@mplungjan和@matthew-lock的评论
document.querySelector("#foo").onkeypress = function(e) {
return "12345NOABC".indexOf(String.fromCharCode(e.which)) >= 0;
};
如果要从输入字段中禁用几个字符,可以执行以下操作:
<input type="text" onkeydown="return (event.keyCode!=86);"/>
86是V的代码。从以下链接检查其他键的代码。
https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
您是否要限制使用无效值提交的表单,或者确实阻止用户输入这些值,这不是100%明确的。其他答案涉及后者,我认为这就是你的意思,但会有人来到这里(像我一样)只想阻止表单提交。
在这种情况下:
在pattern
元素上使用input
属性:
<input pattern="[REGEX HERE]">
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation
HTML
<input type="text" name="" value="" id="testr">
<script type="text/javascript" src="testkeydown.js"></script>
JavaScript的
document.getElementById('testr').addEventListener('keydown', function(e) {
const regex = RegExp('[0-9a-zA-Z]');
if (!regex.test(e.key) && e.key != 'backspace') {
e.preventDefault();
}
});
在上面的代码示例中,您会看到一段代码,它禁用大多数字符,这些字符不在普通js中的0-9,a-z,A-Z之间。
如果你想更多地研究它,你可以google mdn keydown事件并寻找Morzilla开发者网络。