【问题标题】:Using the jQuery validation plugin's submitHandler method properly正确使用 jQuery 验证插件的 submitHandler 方法
【发布时间】:2010-08-19 21:44:16
【问题描述】:

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

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

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

所以,我那段巧妙的代码自然是行不通的。我正在尝试从表单对象访问“操作”属性和两个输入字段,但没有运气。我该怎么做?

【问题讨论】:

  • 运行时遇到什么错误?
  • 好吧,如果我将 form.action 更改为 $(form).attr('action'),并让数据保持不变,那么它会提交以下内容:current_password=[object HTMLInputElement]&new_password=[object萤火虫中的 HTMLInputElement]

标签: javascript jquery ajax jquery-validate


【解决方案1】:

试试这个:

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 即可获取值。此外,我们在这里将data 作为对象传递,以便对其进行编码,否则如果密码中包含&,则帖子将不正确。

【讨论】:

  • 数据对象运行良好,但尝试访问 form.action 时仍然出现错误。有没有办法从对象中调用这个属性?
  • @soren.qvist - 你的<form> 元素是什么样的? $(form).attr('action') 也会给出不同的结果吗?
  • $(form).attr('action') 工作正常。但我担心这种方法是递归的,即。再次选择表单而不是使用当前对象。
  • @soren.qvist - 哦,不,这样做很好,你只是不想专门做$(form).submit(),因为这最终会再次调用submitHandler :)
  • 哦,好吧,好吧,我想它工作得很好!非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多