我需要在输入一些文字后点击'Enter'(键码== 13)后转到下一行。如果您在输入任何文本之前点击“输入”而不是之后,则此方法有效。这是我的一些剧本
var keyPressedOnContactUsMessageHandler = function (e) {
if (e.which == 13 || e.keyCode == 13) {
$(this).append(" \n\n");
if ($("#ContactUsMessage").focus()) {
return false;
} else {
return true;
}
sendMessage();
blockEnterKeyHandler(e);
}
};
答案 0 :(得分:5)
我认为问题可能是您有textarea
并且正在尝试使用append
向其添加内容。 textarea
元素的HTML内容仅在解析页面时才相关。之后,包含的文本由value
属性引用。你应该修改它。
this.value += '\n\n';
我的猜测是您的浏览器很慷慨:如果您在更改value
之前修改HTML,它会相应地修改value
。最好只修改value
。
此外,$("#ContactUsMessage").focus()
将始终返回真值。如果您要测试元素是否已聚焦,请使用is
:
if ($('#ContactUsMessage').is(':focus')) {
请注意,如果您在1.6之前使用的是jQuery版本,这在旧版浏览器中不起作用。
答案 1 :(得分:0)
此外,修复后,本节
sendMessage();
blockEnterKeyHandler(e);
永远不会到达,因为你总是使用这个if语句
返回一些东西if($("#ContactUsMessage").focus()) {
return false;
} else {
return true;
}