jquery.form在某些时候更新目标

时间:2010-09-03 21:17:42

标签: jquery asp.net-mvc ajax jquery-plugins

我在div的弹出和退出视图之间使用jQuery.form插件到.ajaxSubmit()(用于记录和有时用于验证)。用户可以向前和向后导航。一些div具有完整的表单数据,在这种情况下,我将使用表单的父div作为target:。但是,其他div包含文本和导航按钮,并且在ajaxSubmit返回指示要弹出的下一个div id的字符串之后,它们不需要更新(仅.hide())。如果我使用$(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");
    }
}

另外,我不确定我是否在.ajaxSubmit $form回调中正确使用success。有人知道吗? website尚不清楚。

2 个答案:

答案 0 :(得分:0)

我认为这里的$ form是一个jQuery对象。我认为将该对象转储到控制台以查明对象是否存在(仅仅是为了理智)是一个好主意。如果您使用的是firebug,我相信在JS中使用console.log()应该可以工作。

  

<强>成功

     

之后调用的回调函数   表格已提交。如果一个   '成功'回调函数是   只要在之后调用它   响应已从   服务器。它通过以下内容   参数:

     
      
  1. 1。)responseText或responseXML值(取决于的值   dataType选项)。
  2.   
  3. 2。)statusText
  4.   
  5. 3。)xhr(或jQuery包装的表单元素,如果使用jQuery&lt; 1.4)
  6.   
  7. 4。)jQuery包装的表单元素(如果使用jQuery&lt; 1.4则未定义)
  8.   

所以它绝对应该作为jQuery对象传递给你。我想如果你正在使用jQuery&lt; 1.4但你遇到了麻烦。

答案 1 :(得分:0)

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

在调用成功函数之前,目标$(this).parent('div')已使用响应进行了更新。

您的触发表单已被xhr响应覆盖。成功方法中的$ form.parent会出现错误,因为对$ form的引用不再有效,...