-1

我正在尝试ajaxForm在我即时创建的表单上使用。事实上,我的应用程序将“即时”生成一个链接,通过单击该链接,它会生成一个ajaxForm(再次由 jQuery 即时生成!),所以我使用.live()ajaxForm(). 这是我的错误代码:

$('form').live('submit', function() {
    $(this).ajaxForm({dataType: 'html', success: function(data) {
        alert(data);
    }});
    return false; // For preventing page refresh!
});

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

有解决办法吗?

4

4 回答 4

0

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

为此,您需要将事件对象作为处理程序的参数:

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

并使用此行代替return false;

event.stopPropagation();
于 2011-09-10T20:10:04.543 回答
0

return false应该可以,但是,最好的做法是要么做,要么event.preventDefault()event.stopPropagation()你不需要两者都做的时候。在这种情况下,这是event.preventDefault()因为您想停止提交表单的默认操作。但就像我说return false;的应该在你的情况下工作,所以我怀疑你可能会在你使用的插件上遇到某种错误。如果我是你,我会再次查看你的 插件的文档并确保你的选项是正确的。就在后面,我看到了一个dataType: 'html',并且只能按照'xml', 'script', or 'json'文档中的说明...您可能想再看看您对插件的使用情况。

于 2011-09-10T20:27:57.597 回答
0

正如其他人所说,你return false应该工作。

所以,还有其他问题。通过在其中放置调试代码,确保 jQuery 已正确加载,并且您的 on-submit 处理程序实际执行

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

于 2011-09-10T20:40:12.977 回答
-1

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

    //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。从文档推断,您可能根本不需要它。

于 2011-09-10T20:24:25.560 回答