use*_*419 14 html javascript jquery textarea
我有这样的textarea:
<textarea tabindex="1" maxlength='2000' id="area"></textarea>
我用jquery看这个textarea:
$("#area").keypress(function (e) {
if (e.keyCode != 13) return;
var msg = $("#area").val().replace("\n", "");
if (!util.isBlank(msg))
{
send(msg);
$("#area").val("");
}
});
Run Code Online (Sandbox Code Playgroud)
如果按下返回键并且消息不是空白或仅包含行间距,send()会将消息提交给服务器.
问题:发送消息后,textarea不会被清除.在第一页加载时,textarea为空.提交消息后,textarea中有一个空白行,我不知道如何摆脱它.
Tim*_*own 36
问题是Enter按键没有被抑制,并且正在执行其通常的浏览器行为(即添加换行符).添加return false到keypress处理程序的末尾以防止这种情况发生.
$("#area").keypress(function (e) {
if (e.keyCode != 13) return;
var msg = $("#area").val().replace(/\n/g, "");
if (!util.isBlank(msg))
{
send(msg);
$("#area").val("");
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
小智 11
托马斯,e.preventDefault(); 将需要包含在条件内,仅将其应用于回车键.
// Restrict ENTER.
if (e.keyCode == '13') { e.preventDefault(); }
Run Code Online (Sandbox Code Playgroud)
整个函数看起来像这样(带注释):
// Key Press Listener Attachment for #area.
$("#area").keypress( function (event) {
// If the key code is not associated with the ENTER key...
if (event.keyCode != 13) {
// ...exit the function.
return false;
} else {
// Otherwise prevent the default event.
event.preventDefault();
// Get the message value, stripping any newline characters.
var msg = $("#area").val().replace("\n", "");
// If the message is not blank now...
if (!util.isBlank(msg)) {
// ...send the message.
send(msg);
// Clear the text area.
$("#area").val("");
}
}
} );
Run Code Online (Sandbox Code Playgroud)