Javascript 如果值为空,则Parsley.js不使用远程验证

Javascript 如果值为空,则Parsley.js不使用远程验证,javascript,jquery,validation,parsley.js,Javascript,Jquery,Validation,Parsley.js,我有以下问题。这是我要验证的输入 <input type="text" name="vatid" data-parsley-remote data-parsley-remote-validator='vatid'/> 我的问题是,如果用户没有输入值,parsley会向api发送一个请求(在表单提交时),然后触发错误消息。我如何避免这种情况,并且仅在用户输入了某些内容时进行验证 更新 多亏了米尔兹,我得到了以下解决方案,效果很好:) 你可以做到这一点,但你不能使用欧芹遥控器。远程验

我有以下问题。这是我要验证的输入

 <input type="text" name="vatid" data-parsley-remote data-parsley-remote-validator='vatid'/>
我的问题是,如果用户没有输入值,parsley会向api发送一个请求(在表单提交时),然后触发错误消息。我如何避免这种情况,并且仅在用户输入了某些内容时进行验证

更新

多亏了米尔兹,我得到了以下解决方案,效果很好:)


你可以做到这一点,但你不能使用欧芹遥控器。远程验证器的问题在于,在进行远程ajax调用之前,您无法验证该值是否为空

这个问题的一个可能解决方案是添加一个自定义验证器,然后调用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>

$(文档).ready(函数(){
窗式欧芹验证器
.addValidator('vatid',函数(值、要求){
var响应=假;
$.ajax({
url:confighandler.getConfig().apiUrl+'/checkvatids',
数据:{vatid:value},
数据类型:“json”,
键入:“get”,
async:false,
成功:功能(数据){
响应=真;
},
错误:函数(){
响应=错误;
}
});
返回响应;
}, 32)
.addMessage('en','vatid','vatid无效');
});

您还可以检查以下问题,这些问题可以提供一些辅助信息:

我不得不根据自己的需要对其进行一些修改,但效果很好!令人惊叹的!有趣,但为什么答案不是简单地检查字段值长度是否为零并跳过触发远程验证(考虑到您需要验证一个值,并且不接受空值)??@joe我不确定,因为这是很久以前的事了,但我认为您不能“跳过”远程验证。据我回忆,如果您有一个移除验证器,它将始终被验证(也就是说,在您的控制之外,您不能添加您建议的条件)。然而,如果你能做到这一点,请张贴你的答案。
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);
        }
    };
});
<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>