0

我正在使用 jQuery 的实时查询插件将动态行为附加到表单元素并创建 ajax 表单。我面临的问题如下:

在提交的响应中,如果我不在元素上再次调用 livequery,则新加载的表单不会获得所需的行为。但是,如果我再次使用 submit 调用 livequery,则表单会多次提交。

实际上,计数每次都会增加。我尝试使用过期。但这根本没有帮助。关于如何实现这一点的任何评论。

我想要做的是创建所有具有类 js-ajax-form 的表单作为通过 ajax 提交的表单。生成的内容也是应该保留相同行为的表单。那就是它必须通过ajax提交。

非常感谢您的指导。

$.fn.fajaxform = function() {
        var container = null;
        $(this).livequery(
                'submit',
                function(e) {
                    var $this = $(this);
                    container = $this.parent();
                    $this.ajaxSubmit({
                        beforeSubmit : function(formData, jqForm, options) {
                            $('input:file', jqForm[0]).each(function(i) {
                                if ($('input:file', jqForm[0]).eq(i).val()) {
                                    options['extraData'] = {
                                        'is_iframe_submit' : 1
                                    };
                                }
                            });

                            container.block({
                                message : '<h1><img src="/img/busy.gif" /> Loading please wait...</h1>'

                            });

                        },
                        success : function(responseText, statusText) {

                            redirect = responseText.split('*');
                            if (redirect[0] == 'redirect') {
                                location.href = redirect[1];
                            } else if ($this.metadata().container) {
                                $('.' + $this.metadata().container).html(
                                        responseText);

                            } else {
                                $this.parents('div.js-responses').eq(0).html(
                                        responseText);
                            }


                            $('.js-ajax-form').each(
                                function()
                                {
                                    if (this.expire)
                                    {
                                        this.expire();
                                    }
                                }
                            );
                            $('.js-ajax-form').fajaxform();
                            container.unblock();
                        }
                    });
                    return false;
                });
    };
4

2 回答 2

0

升级到最新版本的jQuery后,问题就解决了。我认为,考虑到 livequery 不再处于积极开发阶段,.live 可能是一个更好的选择。

于 2011-07-15T21:49:22.270 回答
0

在这里只是从臀部拍摄:脚本是否包含不止一次?我曾多次意外加载相同的脚本(使用 requireJS),其中事件触发不止一次。

于 2011-06-21T09:50:42.513 回答