0

我正在使用jQuery 表单插件并试图找出为什么我不能在成功函数中使用 find 方法。

           $('#signup-form').ajaxForm({
           beforeSubmit: function (arr, $form, options) {
               $form.find("input[name=email]").css('width', '170');
               $form.find("input[type=submit]").val('Subscribing...').attr('disabled', 'true');
           },
           target: "#signup-form-wrap",
           dataType: 'json', 
           success: function (data, $form) {
               $form.find("input[type=submit]").val('Go!').css('width', '200');

           }
       });

出于某种原因,我收到此错误:

Uncaught TypeError: Object success has no method 'find'

当我提醒 $form 时,它的值就是字符串 'success'。但是,它确实在 beforeSubmit 中起作用。我究竟做错了什么?

4

2 回答 2

0

根据文档,传递给成功函数的第二个参数是 statusText,这听起来像您正在记录的内容。这些是根据文档传递给成功函数的参数:

1.) responseText or responseXML value (depending on the value of the dataType option).
2.) statusText
3.) xhr (or the jQuery-wrapped form element if using jQuery < 1.4)
4.) jQuery-wrapped form element (or undefined if using jQuery < 1.4)

所以我猜你的成功功能是这样的:

success: function (data, status, xhr, $form) {
   $form.find("input[type=submit]").val('Go!').css('width', '200');    
}
于 2011-12-21T21:18:00.743 回答
0

来自 jQuery 表单插件文档:http: //jquery.malsup.com/form/#options-object

成功

表单提交后调用的回调函数。如果提供了“成功”回调函数,则在从服务器返回响应后调用它。它传递了以下参数:

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

默认值:空

根据该信息,您可能需要尝试以下操作:

*注意对发送成功的参数的更改

$('#signup-form').ajaxForm({
  beforeSubmit: function (arr, $form, options) {
    $form.find("input[name=email]").css('width', '170');
    $form.find("input[type=submit]").val('Subscribing...').attr('disabled', 'true');
  },
  target: "#signup-form-wrap",
  dataType: 'json', 
  success: function (data, statusText, xhr, $form) {
    $form.find("input[type=submit]").val('Go!').css('width', '200');
  }
});
于 2011-12-21T21:20:34.473 回答