使用欧芹验证多个字段?

菲尔·吉福德

我有三个用于输入日期的文本输入字段。我想验证它们,以确保它们一起是有效日期。我可以编写JavaScript来测试日期是否为日期,但是我看不到使用Parsley.js一次性验证多个字段并提供一条错误消息的方法。

我的领域是这样的:

<input type="number" name="date-day" value="" maxlength="2">
<input type="number" name="date-month" value="" maxlength="2">
<input type="number" name="date-year" value="" maxlength="4">

这个答案中,我怀疑答案是(不可能)做到这一点,但这似乎是很普遍的需求,因此我想100%肯定!

菲尔·吉福德

这大致就是我最终得到的。现在是我的HTML:

<input type="number" name="dob-day" value="" maxlength="2" class="js-dob-day" required="required" data-parsley-date="js-dob">
<input type="number" name="dob-month" value="" maxlength="2" class="js-dob-month">
<input type="number" name="dob-year" value="" maxlength="4" class="js-dob-year">

我为每个字段添加了一个唯一的类,因此我可以获得它们的值。并补充requireddata-parsley-date新的一天输入。

这是我的JavaScript,其中添加了一个验证器,用于检查合并的字段以查看它们是否为有效日期。为了完整性,我在验证器中包括了两个实用程序函数。验证器依靠moment.js来检查最终字符串的有效性。

// Is `n` a number or numeric string (eg "3")?
function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
};

// Pad `n` with `z` (or `0` by default) to `width`.
function zeroPad(n, width, z) {
    z = z || '0';
    n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
};


window.ParsleyValidator
    .addValidator(
        // Name of our validator.
        'date',

        // `value` will be the value entered into the day field.
        // `requirements` will be "js-dob" in our example.
        function(value, requirements) {
            var day     = $('.'+requirements+'-day').val(), // or value
                month   = $('.'+requirements+'-month').val(),
                year    = $('.'+requirements+'-year').val();

            if (isNumeric(day) === false
                || isNumeric(month) === false
                || isNumeric(year) === false) {
                return false;
            };

            day     = zeroPad(day, 2);
            month   = zeroPad(month, 2);
            year    = zeroPad(year, 4);

            // Use moment.js to make a date which we can then test for validity.
            var date = moment(year+'-'+month+'-'+day, 'YYYY-MM-DD');

            if (date.isValid()) {
                return true;
            } else {
                return false;
            };
        },

        // priority. Not sure how this works.
        34
    )
    .addMessage('en', 'date', "Enter a valid date");

任何建议都超过欢迎!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用欧芹验证多个字段?

来自分类Dev

验证多个字段的Javascript

来自分类Dev

CakePHP-使用相同规则验证多个字段

来自分类Dev

在多个字段上使用表单小部件验证器

来自分类Dev

使用 React Native 从前端验证多个字段

来自分类Dev

多个字段验证精梳错误消息

来自分类Dev

验证表单上的多个字段

来自分类Dev

多个字段的共享验证错误消息

来自分类Dev

jQuery验证属性以检查多个字段

来自分类Dev

满足条件时使用欧芹验证表单

来自分类Dev

无法使用欧芹验证器验证“浮点数”

来自分类Dev

在JSF / PrimeFaces中跨多个字段进行验证

来自分类Dev

ASP.NET验证程序用于多个字段

来自分类Dev

在动态添加多个字段时进行引导验证

来自分类Dev

在多个字段上进行客户端验证

来自分类Dev

如何实现基于多个字段的redux-form验证?

来自分类Dev

如何在JSF中验证多个字段?

来自分类Dev

在更新时对多个字段进行猫鼬定制验证

来自分类Dev

验证bean的多个字段的错误消息问题

来自分类Dev

FOSUserBundle验证具有多个字段的用户

来自分类Dev

如何在JSF中验证多个字段?

来自分类Dev

Laravel验证器检查多个字段的存在

来自分类Dev

为多个字段添加单个验证消息

来自分类Dev

针对多个字段的Symfony2验证

来自分类Dev

在多个字段的 Angular 中设置验证器

来自分类Dev

使用BST搜索多个字段

来自分类Dev

使用Elasticsearch在多个字段上搜索

来自分类Dev

使用sql搜索多个字段的功能

来自分类Dev

如何使用SelectTokens查询多个字段?