2011-08-23 106 views
1
<script language="JavaScript"> 
var mikExp = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|]/; 
function dodacheck(val) 
{ 
    var strPass = val.value; 
    var strLength = strPass.length; 
    var lchar = val.value.charAt((strLength) - 1); 
    if(lchar.search(mikExp) != -1) 
    { 
     var tst = val.value.substring(0, (strLength) - 1); 
     val.value = tst; 
    } 
} 
</script> 

<input type="text" name="display1" id="display1" value="<?php echo $wc['display1']; ?>" class="width241 input fnt11" onKeyUp="javascript:dodacheck(xyz.display1);" maxlength="20"> 

此功能確保特殊字符不會打印在輸入框中。 但是,當我按shift並按超過5秒的任何特殊字符,它打印特殊字符。Javascript特殊字符驗證

任何線索如何阻止它發生?

回答

1

試試這個,

var mikExp = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|]/; 

    function check(e) { 
    var keynum 
    var keychar 
    var numcheck 
    // For Internet Explorer 
    if (window.event) 
    { 
    keynum = e.keyCode 
    } 
    // For Netscape/Firefox/Opera 
    else if (e.which) 
    { 
    keynum = e.which 
    } 
    keychar = String.fromCharCode(keynum) 
    if ((keychar.toString()).search(mikExp) == 0) 
    { 

    return false; 
    } 
    else { 
    return true; 
    } 
    } 

    <input type="text" name="display1" id="display1" value="" class="width241 input fnt11" onKeypress="javascript:return check(event);" maxlength="20"> 
+1

這工作正常,符合我的要求謝謝 – gklaxman

+0

不客氣 – AmGates

1

您應該嘗試onKeyDown,因爲它會在用戶擊中按鍵時觸發,而不是在釋放按鍵時觸發。

所以輸入應該成爲

<input type="text" name="display1" id="display1" value="<?php echo $wc['display1']; ?>" class="width241 input fnt11" onKeyDown="javascript:dodacheck(xyz.display1);" onKeyUp="javascript:dodacheck(xyz.display1);" maxlength="20"> 

我添加的onkeyup還額外措施:)

+0

ü救了我的命!!!!謝謝@mihai lorga – gklaxman