在返回时,JQuery .append文本区域中的换行符

时间:2011-10-05 09:53:00

标签: jquery

我需要在输入一些文字后点击'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);
    }
};

2 个答案:

答案 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;
}