jquery.validate插件访问ajax成功回调中的表单

时间:2012-06-08 04:07:55

标签: javascript jquery jquery-validate

我对如何使用jQuery.validate插件访问提交的表单感到困惑。

在API选项的“成功”选项中:http://jquery.malsup.com/form/#options-object

它表示success函数中的第4个参数是jquery包装的表单对象,但我尝试使用jQuery访问它时不断说出undefined

以下是成功函数在其示例页面上的显示方式:http://jquery.malsup.com/form/#ajaxSubmit

function showResponse(responseText, statusText, xhr, $form)  {
    var id=$form.attr('id');
    console.log('id:'+id);
}

不幸的是,console.log说Uncaught TypeError: Cannot call method 'attr' of undefined.

有什么想法吗?

感谢, 添

2 个答案:

答案 0 :(得分:0)

我认为变量不能以$开头。移除$然后重试?

function showResponse(responseText, statusText, xhr, form)  {
    var id = form.attr('id');
    console.log('id:'+id);
}

或者这可能是另一种解决方案,如果不是jQuery object

function showResponse(responseText, statusText, xhr, form)  {
    var id = $(form).attr('id');
    console.log('id:'+id);
}

其他可能性

function showResponse(responseText, statusText, xhr, form)  {
    var id = $(form).attr('id');
    console.log('id:'+id);
}
function showResponse(responseText, statusText, xhr, form)  {
    var id = form.attr('id');
    console.log('id:'+id);
}
function showResponse(responseText, statusText, xhr, $form)  { // Won't work
    var id = form.attr('id');
    console.log('id:'+id);
}
function showResponse(responseText, statusText, xhr, $form)  { // High chance
    var id = $($form).attr('id');
    console.log('id:'+id);
}

希望这有帮助! :)

答案 1 :(得分:0)

我通过每次显式写出jQuery表单选择器而不是试图将其作为对象传递来解决这个问题。

所以我没有尝试传递$form,而是使用了这个:

$('#myForm').attr(...)

它更冗长,但至少它有效!