代码之家  ›  专栏  ›  技术社区  ›  David Fox

jquery.form有时更新目标

  •  0
  • David Fox  · 技术社区  · 14 年前

    我正在使用jquery.form插件 .ajaxSubmit() 在DIV弹出和弹出视图之间(用于日志记录,有时用于验证)。用户可以向前和向后导航。一些DIV具有完整的表单数据,在这种情况下,我将使用表单的父DIV作为 target: . 但是,另一个DIV包含文本和导航按钮,它们不需要更新(只是 .hide() AjaxSubmit返回一个字符串,指示要弹出的下一个DIV ID)。如果我使用 $(this).parent('div') 作为目标,整个DIV将被返回的字符串覆盖。此字符串仅用于填充隐藏元素,以帮助浏览这些屏幕/div。

    $('.CSRForm').submit(function () {
        $(this).ajaxSubmit({
            target: $(this).parent('div'), //for validation purposes on the forms with data
            success: StepCall //to check whether the response is valid for redirecting; and logging
        });
        return false;
    });
    
    function StepCall(responseText, statusText, xhr, $form) {
        if (responseText != "Negatory") { //"Negatory" would indicate no navigation
            $form.parent('div').css("display", "none"); //doesn't seem to work, neither does "hide()"
            $('#' + responseText).css("display", "block");
        }
    }
    

    另外,我不确定我是否正确使用 $form 在.ajaxsubmit中 success 回调。有人知道吗?这个 website 目前还不清楚。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Christian13467    14 年前

    $form是对调用表单的包装引用。

    目标 $(this).parent('div') 在调用success函数之前,已用响应更新。

    您的触发表单已被xhr响应覆盖。success方法中的$form.parent通过一个错误,因为对$form的引用不再有效,…

        2
  •  0
  •   hydrogen    14 年前

    我认为这里的$form是一个jquery对象。我认为将该对象转储到控制台以查明该对象是否存在(只是为了保持清醒)是一个好主意。如果你使用的是Firebug,我相信在你的JS中使用console.log()应该是可行的。

    成功

    要在之后调用的回调函数 表格已提交。如果A “success”回调函数是 前提是在 已从返回响应 服务器。通过了以下几点 争论:

    1. 1.)ResponseText或ResponseXML值(取决于 数据类型选项)。
    2. 2)统计表
    3. 3.)xhr(如果使用jquery<1.4,则使用jquery包装的表单元素)
    4. 4.)jquery包装表单元素(如果使用jquery<1.4,则为未定义)

    所以它确实应该作为jquery对象传递给您。我想如果你在使用jquery<1.4,你就有麻烦了。