2011-01-20 192 views
31

我試圖阻止輸入密鑰被放入textarea,但它似乎不工作。jQuery:防止輸入密鑰

$('#comment').keyup(function(event) { 
    if (event.text.charCodeAt() == '10') { 
    event.preventDefault(); 
    } 
}); 
+0

我不認爲這個事件正在觸發,我怎麼知道'$('#comment')`是否正確地成爲我想要的? – 2011-01-20 23:30:58

+1

記住要掛鉤的變化事件以及其他人已顯示的鍵盤/向下/按鍵。在這裏的每個解決方案中,人們仍然可以將換行符粘貼到textarea中,以防止需要刪除它們;) – 2011-01-20 23:45:44

回答

65

我已經寫上jsfiddle.net,在那裏你可以試試這個代碼

每個人都有正確的答案:)

$('#comment').keypress(function(event){ 

    if (event.keyCode === 10 || event.keyCode === 13) 
     event.preventDefault(); 

    }); 
示範小
1

嘗試用.keypress和使用return false;

祝你好運!

5

在​​事件中使用event.keyCode

$('#comment').keydown(function(event) { 
    if(event.keyCode == 13) return false; 
    //carry on... 
}); 
+0

爲什麼不是keydown事件? – 2011-01-20 23:30:10

+0

@ŠimeVidas我想你可以使用`keydown`事件。 – 2011-01-20 23:32:29

3
$('#comment').keypress(function(event) { 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
    } 
}); 
+0

Wha? Enter鍵的鍵碼是`13`,而不是`10`。 – 2011-01-20 23:27:53

1

儘管這裏提供的答案將會防止某人輸入回車,它不會阻止某人粘貼回車。

您需要對文本(在javascript或服務器端)進行一些後處理才能將其刪除。

http://jsfiddle.net/we8Gm/

但問題是,爲什麼呢?爲什麼不簡單地使用<input type="text"></input>,它會自動處理,因爲它是單行輸入元素?

11

您無法取消keyup事件。雖然您可以取消​​和keypress事件。在文件中,注意在 「事件信息」, 「取消」 是 「否」 keyup

使用​​允許您取消爲止比keypress更多的密鑰,但如果在密鑰解除後您不想取消,那麼keypress就是您想要的。幸運的是,輸入密鑰是keypress事件的可取消密鑰之一。