2011-01-20 100 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事件的可取消密钥之一。