jQuery Form Plugin以原始形式传递

时间:2011-12-21 21:13:00

标签: javascript jquery jquery-forms-plugin

我正在使用jQuery form plugin并试图弄清楚为什么我不能在成功函数中使用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中工作。我做错了什么?

2 个答案:

答案 0 :(得分:0)

根据documentation,传递给success-function的第二个参数是statusText,听起来就像你记录的那样。这些是根据文档传递给success-function的参数:

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');    
}

答案 1 :(得分:0)

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

  

<强>成功

     

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

     

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

     

默认值:null

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

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

$('#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');
  }
});