jQuery - 表单提交

时间:2012-10-15 13:27:56

标签: jquery

我有一个我打算使用jQuery提交的表单。以下代码第一次正常工作。

如果返回的数据等于“已更新”,我会在#cart-content元素中重新创建表单。换句话说:如果我提交表格并更新我的购物车,我的网站上有一个新表格(具有相同的类别,相同的输入等)。

如果我再次点击提交,它将不会触发我的jQuery代码。我想这是因为它是一个新的表单,在页面加载时不存在,所以jQuery没有绑定到它的事件,并且在我提交表单时它不会被触发。

我需要更改才能让它正常工作?提前谢谢!

$("form.update-cart").on("submit", function(event){
        $.post(link + "create_order/update_cart",  $(this).serialize(),  
        function(data){  
            if(data == 'updated')
            {
                var csrf_cookie = $.cookie('csrf_cookie_name');
                $("#cart-content").load(link + "create_order/display_cart", {"csrf_test_name": csrf_cookie});
            }
            else if(data == 'nothing-to-update')
            {
                return false;
            }
            else
            {  
                alert("Couldnt update cart!");  
            }  
        });  
        return false; 
});

3 个答案:

答案 0 :(得分:2)

试一试:

$("form.update-cart").live("submit", function(event){

答案 1 :(得分:2)

回应你和Catalin Ene, jQuery's "live" function is being deprecated from jQuery

如果您使用 jQuery 1.7.x 或更高版本,则应使用“on”功能:

$("form.update-cart").on("submit", function(event) {

如果 jQuery的版本低于1.7,则可以使用“delegate”:

$("form.update-cart").delegate("submit", "#submit_btn", function(event) {

另外,建议:从服务器端脚本中使用XML或JSON输出是一种很好的做法。

答案 2 :(得分:-1)

我已经明白了,但是我会尽快接受答案。谢谢!

$(document).on("submit", "form.update-cart", function(event) {
        $.post(link + "create_order/update_cart",  $(this).serialize(),  
        function(data){  
            if(data == 'updated')
            {
                var csrf_cookie = $.cookie('csrf_cookie_name');
                $("#cart-content").load(link + "create_order/display_cart", {"csrf_test_name": csrf_cookie});
            }
            else if(data == 'nothing-to-update')
            {
                return false;
            }
            else
            {  
                alert("Konnte Warenkorb nicht aktualisieren!");  
            }  
        });  
        return false; 
});