gpt4 book ai didi

javascript - jQuery.validation 添加生日年龄验证方法错误

转载 作者:行者123 更新时间:2023-11-30 00:12:08 25 4
gpt4 key购买 nike

我正在使用 jQuery.validation gem,当年龄超过 18 岁时,控制台中会出现未知的代码部分。您可以提交表单,但在您输入正确的值后错误消息不会动态消失。我认为这是我的消息显示方式的直接错误,但我无法弄清楚。

控制台亮点

  • From the jQuery Validation Plugin v1.13.1 "result = $.validator.methods[ method ].call( this, val, element, rule.parameters );"

profiles.js

  $(document).ready(function () {
{{$('#new_profile').validate({
rules: {
'profile[first_name]': {
required: true,
minlength: 2
},
'profile[last_name]': {
required: true,
minlength: 2
},
'profile[location]': {
required: true,
minlength: 2
},
'profile[birthday]': {
check_date_of_birth: true,
require: true
},
'profile[operating_system]': {
minlength: 1
},
'profile[about_me]': {
required: true,
minlength: 5,
maxlength: 500
}
}
})
});

$.validator.addMethod("check_date_of_birth", function(value, element) {

var birthday = $("#profile_birthday").val();
var birthdaydate = Date.parse(birthday);
var difference = Date.now() - birthdaydate;
var ageYear = new Date(difference);
var age = Math.abs(ageYear.getUTCFullYear() - 1970);
return age > 18;
}, "You must be at least 18 years of age.");

profile_form

<div class="form_input">
<%= f.label(:birthday, "Date of Birth:") %>
<%= f.date_field(:birthday) %>
<label id="errorBirthday"></label>

最佳答案

我们需要扩展插件以创建自定义验证方法,以使用出生数据检查最低年龄:

<input type="date" name="dob" placeholder="mm/dd/yyyy"/>

$(document).ready(function() {

$.validator.addMethod("minAge", function(value, element, min) {
var today = new Date();
var birthDate = new Date(value);
var age = today.getFullYear() - birthDate.getFullYear();

if (age > min + 1) {
return true;
}

var m = today.getMonth() - birthDate.getMonth();

if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}

return age >= min;
}, "You are not old enough!");

$("form").validate({
rules: {
dob: {
required: true,
minAge: 18
}
},
messages: {
dob: {
required: "Please enter you date of birth.",
minAge: "You must be at least 18 years old!"
}
}
});

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>

<form>
<input type="date" name="dob" placeholder="mm/dd/yyyy" />
<br><br>
<input type="submit" value="Submit">
</form>

关于javascript - jQuery.validation 添加生日年龄验证方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026541/

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