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