[英]Parsley.js Dont use remote validation, if value is empty
我有以下問題。 這是我要驗證的輸入
<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);
}
};
});
您可以完成此操作,但是不能使用ParsleyRemote。 遠程驗證器的問題在於,在進行遠程Ajax調用之前,您無法驗證該值是否為空。
該問題的可能解決方案是使用.addValidator
添加自定義驗證器,然后進行ajax調用。
在這種情況下,您甚至不需要檢查輸入是否包含任何內容,因為僅在輸入不為空時才執行驗證器。
<input type="text" name="vatid" data-parsley-vatid />
<script>
$(document).ready(function() {
window.ParsleyValidator
.addValidator('vatid', function (value, requirement) {
var response = false;
$.ajax({
url: confighandler.getConfig().apiUrl + '/checkvatids',
data: {vatid: value},
dataType: 'json',
type: 'get',
async: false,
success: function(data) {
response = true;
},
error: function() {
response = false;
}
});
return response;
}, 32)
.addMessage('en', 'vatid', 'Vatid is invalid.');
});
</script>
您還可以檢查以下可以提供特殊信息的問題: Parsley.js在AJAX上觸發錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.