如何从jquery中删除所选对象

时间:2013-08-16 11:31:58

标签: jquery

jquery 1.9.1我正在提交一个表单,对此按键事件有一个输入

//    when user clicks post quick reply
    $('.quickResponse').focus(function() {
        var quickResponse = $(this);
        if (quickResponse.val() === 'post quick response') {
            quickResponse.val('');
        }
        quickResponse.keypress(function(e) {
            if (e.keyCode === 13 && quickResponse.val() !== '') {
                post(quickResponse.parent());
                return false;
            }
        });
        quickResponse.blur(function() {
            if (quickResponse.val() === '') {
                quickResponse.val('post quick response');
                quickResponse.remove();
            }
        });
    });

html就像

                <form action="comment" method="post">
                    <input class="quickResponse" type="text" name="comment" value="post quick response"/>
                    <input type="hidden" name="itemId" value="${item.itemId}"/>
                    <input type="hidden" name="posterId" value="${item.customerId}"/>
                </form>

post for只是一个通过ajax提交表单并返回json的函数,我用它来更新页面。

问题是如果用户关注表单模糊并反复重新聚焦,脚本会继续存储表单的所有实例,当用户按下返回键时,所有表单对象都会被多次提交。我该如何防止这种情况。

1 个答案:

答案 0 :(得分:2)

问题是你在事件处理程序中继续绑定其他两个事件。也许这不是问题的直接原因,但它是不好的形式。只需将它们绑定一次即可。

var quickResponse = $('.quickResponse');

quickResponse.focus(function() {
    if (quickResponse.val() === 'post quick response') {
        quickResponse.val('');
    }
}).keypress(function(e) {
    if (e.keyCode === 13 && quickResponse.val() !== '') {
        post(quickResponse.parent());
        return false;
    }
}).blur(function() {
    if (quickResponse.val() === '') {
        quickResponse.val('post quick response');
        quickResponse.remove();
    }
});