addEventListener中的keypress事件问题...仅用于限制输入字符

hir*_*mit 1 javascript textbox input restriction onkeypress

我放了一个文本框....我想对它加以限制..

不应允许在文本框中输入数字和特殊字符...

我怎么能在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>
Run Code Online (Sandbox Code Playgroud)

bob*_*nce 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>
Run Code Online (Sandbox Code Playgroud)

addEventListener如果您愿意,可以使用事件附件,但请注意,这在IE <9中不起作用,您需要该attachEvent模型.(event.returnValue特定于IE attachEvent模型,不能使用addEventListener,而是使用event.preventDefault().)