【问题标题】:jquery.form update target some of the timejquery.form 有时会更新目标
【发布时间】:2010-09-03 21:17:41
【问题描述】:

我正在使用 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");
    }
}

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

【问题讨论】:

  • 再次,该网站不是很清楚。我最好的猜测是它是表单 DOM 的 jQuery 对象包装器。而且我不知道如何在这种情况下使用它来获取所述表单的父 div 并将其隐藏。

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


【解决方案1】:

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

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

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

【讨论】:

  • 是的,我现在看到了。很好的发现。
【解决方案2】:

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

成功

之后调用的回调函数 表格已提交。如果一个 “成功”回调函数是 前提是它在 响应已从 服务器。它通过了以下 论据:

  1. 1.) responseText 或 responseXML 值(取决于 dataType 选项)。
  2. 2.) 状态文本
  3. 3.) xhr(如果使用 jQuery
  4. 4.) jQuery 包装的表单元素(如果使用 jQuery

所以它肯定应该作为一个 jQuery 对象传递给你。我想如果你使用的是 jQuery

【讨论】:

  • 我试过 console.log();在 $form 行之前和之后,然后切换到 Firebug 中的“控制台”选项卡——除了帖子之外我什么也没看到。我正在使用 jQuery 1.4.1
  • 由于我使用的是 1.4.1,它不会是包装形式,而是 xhr 本身,它不会有任何引用父 div 的方式
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多