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.'
}
}
});
这非常有效。
问题:
上面的示例在我添加新实体时效果很好。我还想验证更新,但在这种情况下,它应该在检查唯一电子邮件时排除当前实体。这意味着我还需要传递当前实体的主键。我的方法是否正确,"data" 属性是否是推荐的方法?
有什么方法可以访问当前表单的 "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") } }
我有一个 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.'
}
}
});
这非常有效。
问题:
上面的示例在我添加新实体时效果很好。我还想验证更新,但在这种情况下,它应该在检查唯一电子邮件时排除当前实体。这意味着我还需要传递当前实体的主键。我的方法是否正确,"data" 属性是否是推荐的方法?
有什么方法可以访问当前表单的 "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") } }