我已经放置了一个文本框....我想对它进行限制..
不应允许在文本框中输入数字和特殊字符...
如何在Javascript中使用onkeypress事件?
我的代码是......
<script>
function event()
{
document.getElementById("TX1").addEventListener("keypress", handleKeyPress, false);
}
function handleKeyPress(e)
{
var restricted = "0123456789_#!";
var key = e.keyCode || e.which;
var i=0;
for(;i<restricted.length;i++)
{
if (restricted.charCodeAt(i) == key)
{
e.returnValue = false;
}
return true;
}
</script>
<body onLoad="event();">
<input type="text" name="T1" id="TX1" size="27" maxlength="35" >
</body>
答案 0 :(得分:5)
不应允许在文本框中输入数字和特殊字符...
不要通过keypress
过滤来执行此操作。它是用户敌对的,令人困惑的,弄乱了其他控制按键,并且很容易通过使用其他输入方法来打败,例如复制/粘贴,拖放,表单填充,拼写检查,IME ......
相反,有一个警告,当用户将意外的东西放入其中时,会明显指示用户,例如:
<input type="text" name="T1" id="TX1"/>
<div id="TX1_help">
Please do not use numbers or ‘!’, ‘_’ or ‘#’ characters in this field.
</div>
<script type="text/javascript">
var tx1= document.getElementById('TX1');
var tx1help= document.getElementById('TX1_help');
function checkTX1() {
var isok= /^[^0-9_#!]*$/.test(tx1.value);
tx1help.style.display= isok? 'none' : 'block';
}
checkTX1();
// Re-check the field every time a key is pressed or other change event.
// To ensure it is still checked in a timely fashion in the case of
// non-keyboard events, add a timer as well.
//
tx1.onchange=tx1.onkeyup= checkTX1;
setInterval(checkTX1, 500);
</script>
如果您愿意,可以使用addEventListener
作为事件附件,但请注意,这在IE&lt; 9中不起作用,您需要attachEvent
模型。 (event.returnValue
特定于IE attachEvent
模型,不适用于使用addEventListener
的{{1}}。)
答案 1 :(得分:0)
尝试以下方法:
document.getElementById('TX1').addEventListener('keypress', function(event) {
if (event.keyCode == 13) {
handleKeyPress();
}
});