jQuery 创建与更新的远程验证

jQuery remote validation on create vs update

我有一个 Laravel 5.4 后端,所有验证规则都已设置并且工作正常。

我还为客户端验证实现了 jQuery Validation 插件以获得更好的体验,并成功地使用它来测试远程验证。

因此,例如在添加实体时检查唯一的电子邮件地址:

$("#customerForm").validate({
rules: {
    name: "required",
    email: {
        required: true,
        email: true,
        remote: {
            url: "/api/admin/customers/checkuniqueemail",
            type: "post",
            async: false,
            complete: function(data) {
                if (data.responseText == "true") { //i.e. email is unique
                    // show some feedback
                } 
            }
        }
    }
},
messages: {
    email: {
        remote: 'The email has already been taken.'
    }
}

});

这非常有效。

问题:

  1. 上面的示例在我添加新实体时效果很好。我还想验证更新,但在这种情况下,它应该在检查唯一电子邮件时排除当前实体。这意味着我还需要传递当前实体的主键。我的方法是否正确,"data" 属性是否是推荐的方法?

  2. 有什么方法可以访问当前表单的 "action" 属性并将其作为 "data" 变量发送。

我问的原因是在 Laravel "Edit" 表单中,实体 ID 是操作的一部分 url(例如 /customers/edit/1234),而不是真的在一个隐藏的字段中。因此,如果我可以获取 "action" 并发送它的值,我可以提取 ID 并检查除该实体之外的唯一性。我正在使用 Route Model binding 以防相关

谢谢!

使用 jquery 验证,您可以像 jquery ajax 选项一样使用它。话虽如此,您可以指定数据属性。 属性 可以采用静态值或函数来 return 动态值(在您的案例中您提交的表单的操作属性)

data: {'customer_id':function(){ return $('#customerForm').attr("action") } }