我在这里有一个由onkeypress触发的代码...我想让它在输入特殊字符时发出警报。除了警报之外,如果用户在字段中键入特殊字符,则应删除键入的特殊字符,焦点应返回到字段。我似乎无法动摇这个问题。你能帮助我吗?提前谢谢:D
function ei(e)
{
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < e.value.length; i++) {
if (iChars.indexOf(e.value.charAt(i)) != -1) {
alert ("Please do not use special characters.");
e.value = e.value-1;
e.focus();
return false;
}
}
}
这将在文本字段中调用..像这样
<input type="text" name="name" onkeyup="ei(this)">
答案 0 :(得分:2)
这里有一些奇怪的事情发生。
onkeyup
属性。绑定事件监听器函数,使代码更加模块化。您可能不希望每次有人输入无效字符时发出警报。这只会惹恼和激怒用户。我只是将它记录到控制台,但你应该考虑将错误文本放在输入元素旁边。
$(function () {
function ei(e) {
var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < this.value.length; i++) {
if (iChars.indexOf(this.value.charAt(i)) != -1) {
console.log("Please do not use special characters.");
this.value = this.value.slice(0, this.value.length - 1);
this.focus();
return false;
}
}
}
$('#hurp').on('keyup', ei);
});
并在输入元素中添加一个id:
<input type="text" name="name" id="hurp">
请参阅此JSFiddle:http://jsfiddle.net/QgLcB/
答案 1 :(得分:1)
e.value = e.value-1;
没有按你的想法行事。
您可能想要使用substr()
答案 2 :(得分:1)
为什么你会费心使用keyup
事件?最好使用keydown
或keypress
事件,然后取消它(我使用this site查找密钥代码):
function ei (event) {
event = event || window.event;
switch (event.keyCode) {
case 47: //.
case 33: //!
//etc
event.preventDefault(); //cancel the current action, which will stop it writing out to the textbox
break;
default:
break;
}
}
我还建议您研究jQuery,而不是使用内联JavaScript来连接您的事件,还要查看jQuery Validation plugin,因为它可以帮助您处理大量代码。