这是一个小提琴 - http://jsfiddle.net/zuVpx/1/
Javascript代码:
<script>
function validate(e) {
var regex = new RegExp("[a-zA-Z0-9]");
var key = e.keyCode || e.which;
key = String.fromCharCode(key);
if(!regex.test(key)) {
e.returnValue = false;
if(e.preventDefault) {
e.preventDefault();
}
}
}
</script>
HTML code:
<input type="text" onkeypress="validate(event)" />
我只想要字符和数字。像退格键,删除键,大写锁定键和箭头键等键应该有效。
提前致谢。
答案 0 :(得分:5)
在输入中添加id
(例如“验证”)并使用:
document.querySelector('#validate').onkeypress = validate;
function validate(e) {
e = e || event;
return /[a-z0-9]/i.test(
String.fromCharCode(e.charCode || e.keyCode)
) || !e.charCode && e.keyCode < 48;
}
答案 1 :(得分:2)
尝试
/[-!$%^&*()_+|~=`\\#{}\[\]:";'<>?,.\/]/.test(your_variable)
如果匹配则返回true。
答案 2 :(得分:1)
如何使用额外的if子句呢?有点像...
key.charCodeAt(0) > 32
因此...
function validate(e) {
var regex = new RegExp("[a-zA-Z0-9]");
var key = e.keyCode || e.which;
key = String.fromCharCode(key);
if(!regex.test(key) && key.charCodeAt(0) > 32) {
e.returnValue = false;
if(e.preventDefault) {
e.preventDefault();
}
}
}
答案 3 :(得分:0)
要解决例如左箭头键与key
键产生相同%
值的问题,您可以使用
function validate(e) {
e = e || window.event;
var bad = /[^\sa-z\d]/i,
key = String.fromCharCode( e.keyCode || e.which );
if ( e.which !== 0 && e.charCode !== 0 && bad.test(key) ) {
e.returnValue = false;
if ( e.preventDefault ) {
e.preventDefault();
}
}
}
任何可打印字符都应生成非零e.which
和e.charCode
值
请参阅JavaScript Madness: Keyboard Events。
以上假设空格有效 - 如果不是,只需从否定的字符类中删除\s
。
答案 4 :(得分:0)
这对我有用。防止用户输入特殊字符(除了Backspace等)
<video>
这是通过将html属性与keydown事件处理程序绑定而触发的
PatternValidation(e){
if(!e.key.match(/^[a-zA-Z0-9]*$/))
{
e.preventDefault();
}
},