我正在使用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中工作。我做错了什么?
答案 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');
}
});