Javascript 使用jQuery验证插件';s submitHandler方法

Javascript 使用jQuery验证插件';s submitHandler方法,javascript,jquery,ajax,jquery-validate,Javascript,Jquery,Ajax,Jquery Validate,首先是来自jQuery验证插件的一些文档: 使用submitHandler处理某些内容,然后使用默认的submit。请注意,“form”指的是DOM元素,这样验证就不会再次触发 所以,很自然地,我的一段巧妙的代码不起作用了。我正试图从表单对象访问'action'属性和两个输入字段,但运气不好。我该怎么做呢?试试这个: submitHandler: function(form) { $.ajax({ type: 'POST', url: $(form).at

首先是来自jQuery验证插件的一些文档:

使用submitHandler处理某些内容,然后使用默认的submit。请注意,“form”指的是DOM元素,这样验证就不会再次触发

所以,很自然地,我的一段巧妙的代码不起作用了。我正试图从表单对象访问'action'属性和两个输入字段,但运气不好。我该怎么做呢?

试试这个:

submitHandler: function(form) {
    $.ajax({
        type: 'POST',
        url: $(form).attr('action'),
        data: { current_password : form.current_password.value,
                new_password: form.new_password.value }
        success: function(){
            alert("succes");
        }
    });
}

当前,它不是提交元素的值,而是在元素上调用toString,因此只需添加
.value
即可获得值。另外,我们在这里将
数据作为对象传递,以便对其进行编码,否则,例如,如果密码中有
&
,则帖子将不正确。

运行此操作时会出现什么错误?如果我将form.action更改为$(form.attr('action'),并让数据被编码,那么它将提交以下内容:current\u password=[object HTMLInputElement]&new_password=[object HTMLInputElement]在FireBug中数据对象工作得很好,但我在尝试访问form.action时仍然出错。有没有方法从对象调用此属性?@soren.qvist-您的
元素看起来像什么?还有
$(form.attr('action'))
给出不同的结果?$(form).attr('action')很好。但我担心这种方法是递归的,即再次选择表单而不是使用当前对象。@soren.qvist-哦,不,这样做很好,你只是不想做
$(form).submit()
特别是,因为这会再次调用
submitHandler
:)哦,好吧,那么我想这很好!非常感谢您的帮助。
submitHandler: function(form) {
    $.ajax({
        type: 'POST',
        url: $(form).attr('action'),
        data: { current_password : form.current_password.value,
                new_password: form.new_password.value }
        success: function(){
            alert("succes");
        }
    });
}