0
我遇到以下问题。这里是输入我想验证Parsley.js如果值为空,则不要使用远程验证
<input type="text" name="vatid" data-parsley-remote data-parsley-remote-validator='vatid'/>
,这是asyncValidator
$('[name="vatid"]').parsley()
.addAsyncValidator('vatid', function (xhr) {
return 404 === xhr.status;
}, confighandler.getConfig().apiUrl + '/checkvatids');
我的问题是,这也如果用户没有输入值香菜发送一个请求(在表格提交)到api,然后触发错误消息。我怎样才能避免这种情况,并只验证用户是否输入了某些内容?
更新
非常感谢milz,我已经得到了以下解决方案,它像魅力:)
define([
'jquery',
'confighandler',
'requirejs-i18n!nls/labels',
'parsleyjs'
], function($, confighandler, Labels) {
'use strict';
return {
initialize: function() {
// add custom validators
window.ParsleyValidator
.addValidator('vatid', function(val) {
var isvalid;
$.ajax({
url: confighandler.getConfig().apiUrl + '/checkvatids/' + val,
dataType: 'json',
type: 'get',
async: false,
success: function(response) {
isvalid = (response.result.data.isvalid === 'true') ? true : false;
},
error: function() {
isvalid = false;
}
});
return isvalid;
}, 32).addMessage('de', 'vatid', Labels.validation.vatid);
}
};
});
我不得不修改了一下我的需求,但它的作品般的魅力!真棒! – crebuh 2014-09-24 13:05:22
有趣,但为什么答案不是简单地检查字段值长度是否为零,而是完全忽略触发远程验证(考虑到您需要验证值并且不接受空值)? – joe 2015-01-06 18:31:22
@joe我不确定这是否是前一段时间,但我认为你不能“跳过”远程验证。从我记得的情况来看,如果您有删除验证程序,它将始终得到验证(也就是说,您无法控制,无法添加您建议的条件)。但是,如果您能够这样做,请发布您的答案。 – 2015-01-06 21:05:55