制作即时'ajaxForm'

时间:2011-09-10 20:02:03

标签: jquery ajaxform on-the-fly

我正在尝试在即时创建的表单中使用ajaxForm。实际上,我的应用程序将“动态”生成一个链接,通过单击该链接,它将生成一个ajaxForm(再次由jQuery动态执行!),所以我使用了{{1}函数.live()。这是我的错误的代码:

ajaxForm()

在我的表单中,当我点击提交按钮时,页面会刷新。

有解决方案吗?

4 个答案:

答案 0 :(得分:0)

尝试使用event.stopPropagation();这是一个JQuery函数。

为此,您需要将事件对象作为参数提供给handeler:

$('form').live('submit', function(event){

并使用此行代替return false;

event.stopPropagation();

答案 1 :(得分:0)

return false应该有效,但是,当您不需要同时执行event.preventDefault()event.stopPropagation()时,最佳做法是event.preventDefault()return false;。在这种情况下,它将是dataType: 'html',因为您想要停止提交表单的默认操作。但就像我说'xml', 'script', or 'json'应该在你的情况下工作,所以我怀疑你可能会使用你正在使用的插件出现某种错误。如果我是你,我会再次查看文档your 插件并确保您的选项是正确的。在后面我看到{{1}}并且文档中只有{{1}} ...您可能想要再次查看您对该插件的使用情况。

答案 2 :(得分:0)

正如其他人所说,你的return false应该有效。

所以,其他错误。确保正确加载了jQuery,并通过在其中放置调试代码来确保提交的处理程序实际执行

此外,请确保已安装并启用Firebug(或等效于您的浏览器),以便您可以执行调试。

答案 3 :(得分:-1)

您可能需要拨打preventDefault来代替“return false”。表格与AJAX结合的jQuery live用例的伪代码如下:

    //Override form submit
    $("form").live("submit", function (event) {
        event.preventDefault();
        var form = $(this);
        $.ajax({
            url: form.attr('action'), // Get the action URL to send AJAX to
            type: "POST",
            data: form.serialize(), // get all form variables
            success: function(result){
                // ... do your AJAX post result
            }
        });
    });

另外,我不确定是否使用ajaxForm(因为我没有使用过ajaxForm),你需要使用jQuery.live。从文档中推断,您可能根本不需要它。