我想将输入限制为字母数字和空格。
我希望它能在密钥上运行,以便用户看到其他字符被拒绝。换句话说,我不希望非法字符留在字段中,只有在提交后才会被删除。
我试过了......
$('#custName').keyup(function() {
$(this).val($(this).val().match(/^[\w\s]+$/));
});
但是只要输入非法字符,就会删除整个字符串。
如何在保留合法字符的同时防止输入非法字符?
答案 0 :(得分:3)
.match()
正在返回:
null
如果不匹配:这就是输入丢失的原因您需要的更像是:
$('#custName').keyup(function() {
$(this).val($(this).val().replace(/[^\w\s]+/g, ''));
});
正如Hanlet所注意到的,这种方法的另一个潜在问题是某些浏览器会针对不可打印的字符触发keyup
事件。因此,您可能需要使用event.keyCode
上的测试对其进行过滤。
答案 1 :(得分:1)
是的,就像那个@Arnauld,但我会用:
$('#price').on('change keyup paste mouseup', function() {
this.val = $(this).val($(this).val().replace(/[^\w\s]+/g, ''));
}).bind('paste', function () {
$(this).val(this.val.replace(/[^\w\s]+/g, ''));
});
这可以防止粘贴特殊字符。
答案 2 :(得分:1)
名称验证//将接受字母,空格和退格键
$('.nameonly').on('keydown', function(e){
if ((e.which < 65 && e.which != 32 && e.which != 8) || e.which > 90 ) {
return false;
}
});