gpt4 book ai didi

javascript - 用 Parsley 验证多个字段?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:53 25 4
gpt4 key购买 nike

我有三个用于输入日期的文本输入字段。我想验证这些以确保它们一起是有效日期。我可以编写 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">

来自 this answer我怀疑答案是这(根本)不可能,但这似乎是一个很普遍的需求,所以我想 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");

欢迎提出任何建议!

关于javascript - 用 Parsley 验证多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com