2014-10-19 40 views
0

爲什麼onkeypress無法檢測Backspace keyboard爲什麼onkeypress無法檢測退格鍵盤?

第一,填補xxxxxxxxxx到輸入型文本,然後按submit button 你會看到紅色文本invalid email address並按backspace keyboard在輸入型文本刪除一些字符,爲什麼不onkeypress退格鍵盤上的工作嗎?

http://jsfiddle.net/btetyLwb/1/

<script> 
function clear_email_valid_text() { 
     $('#valid_email').hide(); 
     $('#invalid_email').hide(); 
} 


function validateForm() { 
    var newsletters_email = document.forms["form_validate_email_newsletters"]["newsletters_email"].value; 
    var atpos = newsletters_email.indexOf("@"); 
    var dotpos = newsletters_email.lastIndexOf("."); 
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=newsletters_email.length) { 
     $('#valid_email').hide(); 
     $('#invalid_email').show(); 
     return false; 
    } 
    else {   
     $('#valid_email').show(); 
     $('#invalid_email').hide(); 
     return false; 
    } 
} 
</script> 
+1

因爲'onkeypress'只在按下按鍵產生可打印字符時觸發。 – Teemu 2014-10-19 16:57:12

+0

但我按下鍵'backspace'爲什麼onkeypress不工作? – 2014-10-19 16:58:59

+0

'backspace'不是可打印的字符。如果您想檢測某些特定的鍵,請使用'onkeyup'。 – Teemu 2014-10-19 17:02:30

回答

0

也許,你的文字輸入沒有焦點,當你按下退格? $( '#INVALID_EMAIL')之後

document.forms["form_validate_email_newsletters"]["newsletters_email"].focus(); 

秀();:

嘗試添加這一點。

+0

如果在按下「backspace」時輸入沒有焦點,頁面將在大多數瀏覽器中重定向。 – Teemu 2014-10-19 17:04:04

+0

@泰姆,是的。我建議,因爲在我的FF樣例jsfiddle中,通過按BackSpace觸發該處理程序(按鍵)。 – dfionov 2014-10-19 17:07:09

+0

的確,它可以在FF中運行,但不能在IE或Chrome中運行。實際上'onkeypress'不是標準的一部分,實現因瀏覽器而異。一個「傳統」的「onkeypress」行爲是我在OP下面的評論中描述的。 – Teemu 2014-10-19 17:11:26