是否可以按需提出欧芹错误?
Is it possible to raise a parsley error on demand?
我的应用使用欧芹进行验证。客户端没有问题。我遇到的问题是让欧芹根据 AJAX 响应使字段无效。我正在尝试验证 SSN。从技术上讲,全 9 是 SSN 的有效格式,但一旦它到达服务器,我们的系统就会将其视为无效。我知道我可以编写一个 Parsley 规则来检查这一点,但我们表单上的任何字段都可能根据服务器上的规则无效(我无权访问这些)。我正在寻找一种方法来做这样的事情:
$('form').submit(function(e) {
e.preventDefault();
if ($(this).parsley().isValid()) {
$.post("/foo/bar/post",
$(this).serializeArray(),
function(response) {
if (response.valid) {
alert('success!')
} else {
// this is where I'm lost
forceParsleyInvalidation(response.item, response.message)
}
},
'json');
}}
返回的响应包含我需要的所有信息,我只是不确定如何让 Parsley 根据从服务器返回的无效信息来执行它的操作。我试图避免为每个可能无效的元素编写特定规则。
Parley 允许您通过 Javascript (check the documentation) 添加、更新和删除错误。
以下代码有效,但您可能需要根据从服务器获得的内容对其进行调整。出于演示目的,我手动设置了 response
值,但没有 $.post
.
if ($(this).parsley().isValid()) {
var response = [];
response.item = 'ssn';
response.message = 'Well, you need to correct this field';
var FieldInstance = $('[name=' + response.item + ']').parsley(),
errorName = response.item + '-custom';
/**
* You'll probably need to remove the error first, so the error
* doesn't show multiple times
*/
window.ParsleyUI.removeError(FieldInstance, errorName);
// now display the error
window.ParsleyUI.addError(FieldInstance, errorName, response.message);
}
看看 at this jsfiddle 看看它是如何工作的。
我的应用使用欧芹进行验证。客户端没有问题。我遇到的问题是让欧芹根据 AJAX 响应使字段无效。我正在尝试验证 SSN。从技术上讲,全 9 是 SSN 的有效格式,但一旦它到达服务器,我们的系统就会将其视为无效。我知道我可以编写一个 Parsley 规则来检查这一点,但我们表单上的任何字段都可能根据服务器上的规则无效(我无权访问这些)。我正在寻找一种方法来做这样的事情:
$('form').submit(function(e) {
e.preventDefault();
if ($(this).parsley().isValid()) {
$.post("/foo/bar/post",
$(this).serializeArray(),
function(response) {
if (response.valid) {
alert('success!')
} else {
// this is where I'm lost
forceParsleyInvalidation(response.item, response.message)
}
},
'json');
}}
返回的响应包含我需要的所有信息,我只是不确定如何让 Parsley 根据从服务器返回的无效信息来执行它的操作。我试图避免为每个可能无效的元素编写特定规则。
Parley 允许您通过 Javascript (check the documentation) 添加、更新和删除错误。
以下代码有效,但您可能需要根据从服务器获得的内容对其进行调整。出于演示目的,我手动设置了 response
值,但没有 $.post
.
if ($(this).parsley().isValid()) {
var response = [];
response.item = 'ssn';
response.message = 'Well, you need to correct this field';
var FieldInstance = $('[name=' + response.item + ']').parsley(),
errorName = response.item + '-custom';
/**
* You'll probably need to remove the error first, so the error
* doesn't show multiple times
*/
window.ParsleyUI.removeError(FieldInstance, errorName);
// now display the error
window.ParsleyUI.addError(FieldInstance, errorName, response.message);
}
看看 at this jsfiddle 看看它是如何工作的。