我有一个textarea,并且在每个输入中,如果有东西写的话,我希望它变成空白。但我的问题是;在第一行输入换行符,然后继续从第二行开始写入。它只发生在第一次进入。清空textarea没有问题,你只需继续写第二行,这就是问题所在。
onkeydown= if(event.keyCode == 13){
sendMessage();
}
function sendMessage(user){
var message = $('#textarea').val();
$('#textarea').val('');
}
答案 0 :(得分:3)
if(event.keyCode == 13) {
sendMessage();
if (event.preventDefault) event.preventDefault();
return false;
}
keydown
在textarea
中输入字符之前发生,因此您只需要在事件上调用preventDefault
,这样在您调用之后它就不会进入换行符清除文本区域的功能。如果上面的代码在HTML中是内联的,那么return false
就足够了,这不是真正推荐的。请参阅下面的更新解决方案:
对于不引人注意和反算法,我建议用jQuery完成所有操作:
$('#textarea_ID').keydown(function(e) {
if (e.which == 13) {
e.preventDefault();
var message = $(this).val();
$(this).val('');
//rest of your function using `message` here
}
});
答案 1 :(得分:0)
在jQuery中,使用代码的which
属性。然后使用e.preventDefault();
var field = $('.classname');
field.keydown(function(e){
if(e.which==13){
sendMessage();
e.preventDefault();
}
});
答案 2 :(得分:0)
只需将return false;
添加到keydown
功能即可。这可以防止执行密钥的默认操作(在这种情况下为换行符)。
您可能还希望包含代码来处理Internet Explorer获取密钥代码的方式。你的新功能将是:
onkeydown = function (e) {
// Gets keycode cross browser
e = window.event ? window.event : e;
var keycode = e.keyCode !== null ? e.keyCode : e.charCode;
// Checks if it was the enter key that was pressed (enter = keycode 13)
if (keycode === 13) {
// Calls function to do stuff
sendMessage();
// Cancels the default action of the (enter) key
return false;
}
}