textarea没有使用jQuery在keypress上清除

时间:2015-10-08 10:50:57

标签: jquery

jQuery的:

$(document).on("keypress", ".admin-msg-box textarea", function (e) {
        if (e.keyCode == 13) {
            var msg = $(this).val();

            var c_id = $(this).closest('.msg_box').find('.msg_head').data('c_id');

            if ($.trim(msg).length !== 0) {
                  saveAdminMsg(c_id,msg);
                $('<div class="msg_a temp_msg">' + msg + '</div>').insertBefore('.msg_push');
                $('.msg_body').scrollTop($('.msg_body')[0].scrollHeight);
            }
        }
    });

按ENTER后应清除textarea。但它包含旧文本,如果我再次按ENTER键,它会再次附加旧文本。应该提到textarea是动态创建的。

1 个答案:

答案 0 :(得分:1)

您只是错过了重置textareamsg变量的信息:

$(this).val("");
msg = "";

请查看以下示例:

$("#appendHere").append('<div class="admin-msg-box"><textarea></textarea></div>');

$(document).on("keypress", ".admin-msg-box textarea", function (e) {

        if (e.keyCode == 13) 
        {
            e.preventDefault();
            var msg = $(this).val();
            
            //var c_id = $(this).closest('.msg_box').find('.msg_head').data('c_id');
  
            if ($.trim(msg).length !== 0)
            {
                //saveAdminMsg(c_id,msg);
                //$('<div class="msg_a temp_msg">' + msg + '</div>').insertBefore('.msg_push');
                //$('.msg_body').scrollTop($('.msg_body')[0].scrollHeight);
              alert(msg);
            }
          
          $(this).val("");
          msg = "";
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<div id="appendHere"></div>

除了这个答案:

我已添加e.preventDefault();,因此当您按Enter键时,它不会向textarea添加新行。