首页 文章

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

提问于
浏览
1

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

在API选项的"success"选项中:http://jquery.malsup.com/form/#options-object

它说成功函数中的第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

    我猜想变量不能以 $ 开头 . 删除 $ 然后重试?

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

    希望这可以帮助! :)

  • 0

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

    所以,而不是试图传递 $form 我使用了这个:

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

    它更冗长但至少它有效!

相关问题