我有输入(type =密码),我只对某些字符限制此输入。代码在这里
$(document).ready(function() {
$('#nguestpass, #nguestps, #nuserpass, #nuserps, #nadminpass, #nadminps').bind('keyup').bind('keyup', function(){
new_char = $(this).val();
if (/[^a-zA-Z0-9\!\@\#\%\*\(\)_\-\+\=\[\]\:\;\'\,\.\?/]/.test( new_char ) === true ) {
alert('Entred character is not allowed. Please correct it.');
return false;
}
return true;
});
});
如果我粘贴无效代码(例如“ř”)获取警报(进入....)。它是正确的。如果我想输入下一个字符,我会再次收到警报。
我觉得这对用户来说很讨厌。更好的修改(根据我) - 如果我输入了无效字符,我会收到警报 - 确认确定无效字符将被删除。
可以知道它是做什么的吗?感谢
P.s。:抱歉我的英文。
答案 0 :(得分:1)
尝试此操作删除最后一个字符:
$(this).val($(this).val().substring(0,$(this).val().length-1));
并将其放在return false;
答案 1 :(得分:1)
这应该做你期望的事情:
$(function () { // Same as document ready, just shorter.
// Try to replace all these IDs with a common class you can put on every input.
// If you're using a not-so-old version of jQuery, use .on() instead of .bind().
$('#nguestpass, #nguestps, #nuserpass, #nuserps, #nadminpass, #nadminps').on('keyup', function () {
var new_char = $(this).val();
if (/[^a-zA-Z0-9\!\@\#\%\*\(\)_\-\+\=\[\]\:\;\'\,\.\?/]/.test(new_char) === true) {
alert('Entred character is not allowed. Please correct it.');
$(this).val(new_char.substring(0, new_char.length - 1));
return false;
}
return true;
});
});
答案 2 :(得分:-1)
您的代码中存在相当多的错误(绑定在没有侦听器的情况下调用一次,new_char是一个全局变量)并且实际上无法清除密码错误时应该发生的无效值。
试试这个。
$(function() {
$('#nguestpass, #nguestps, #nuserpass, #nuserps, #nadminpass, #nadminps').bind('keyup', function(){
var new_char = $(this).val();
if (/[^a-zA-Z0-9\!\@\#\%\*\(\)_\-\+\=\[\]\:\;\'\,\.\?/]/.test( new_char ) === true ) {
alert('Entred character is not allowed. Please correct it.');
// reset value
$(this).val("");
return false;
}
});
});