我发现了一些类似的指令,但没有任何帮助,所有这些指令要么用于特殊字符,要么用于数字。
我只需要让用户输入 1 , 2 , 3, 4, 5, N, O, A, B, C 。所有其他字符都应受到限制。
有什么方法可以让我自己选择限制/允许的输入字符?
- 对javascript不是很熟悉。
我发现了一些类似的指令,但没有任何帮助,所有这些指令要么用于特殊字符,要么用于数字。
我只需要让用户输入 1 , 2 , 3, 4, 5, N, O, A, B, C 。所有其他字符都应受到限制。
有什么方法可以让我自己选择限制/允许的输入字符?
使用 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;
};
尝试这个
$(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" />
2020 年 11 月 25 日更新
let textarea = document.getElementById('txt');
textarea.addEventListener('keydown', (e) => {
if(['1','2','3','4','5', 'N', 'O', 'A', 'B', 'C'].indexOf(e.key) !== -1){
// do something
} else {
e.preventDefault();
}
});
您是否要限制使用无效值提交的表单,或者从字面上阻止用户甚至输入这些值,这并不是 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、az、AZ 之间的字符。
如果你想更多地研究它,你可以谷歌 mdn keydown 事件并寻找 Morzilla 开发者网络。
如果您想禁用输入字段中的几个字符,您可以执行以下操作:
<input type="text" onkeydown="return (event.keyCode!=86);"/>
86 是 V 的代码。从以下链接检查其他键的代码。
https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
<input pattern="[1-5A-CNO].*" title="You can only use the following characters: 1 , 2 , 3, 4, 5, N, O, A, B, C">
源/沙箱试用: https ://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_pattern
如果有人正在寻找纯 js 解决方案:您需要像这样阻止 onkeydown 事件的密钥
HTML
<input type="text" name="" value="" onkeydown="preventSomeKeys(event)">
Javascript
function preventSomeKeys(event){
var keyCode = event.keyCode
if([97,98,99,110,111,65,66,67,78,79,49,50,51,52,53].includes(keyCode)){
return false;
}
}