出生日期小于 18 的淘汰赛 JS 验证
Posted
技术标签:
【中文标题】出生日期小于 18 的淘汰赛 JS 验证【英文标题】:Knockout JS Validation for Date of Birth less than 18 【发布时间】:2019-01-08 11:12:26 【问题描述】:在为我的项目构建一个函数时需要帮助,该函数将禁止任何人在出生日期字段中输入小于 18 岁的出生日期。
验证将起作用!只是需要帮助来建立一个验证
html代码
<label>Date of Birth <span class="red-asterisk">*</span></label>
<input type="text" id="DOB" name="DateOfBirth" placeholder="  dd/mm/yyyy" data-bind="datePicker : Model.DateOfBirth, dateTimePickerOptions : format: 'DD/MM/YYYY', maxDate: (new Date()).addDays(-6573), useCurrent : false" />
js文件代码
self.Model.DateOfBirth = ko.observable().extend(
date: true,
required:
params: true,
message: "Please enter a date"
);
我应该在哪里更改验证码或显示验证年龄小于 18 岁不允许登录?
【问题讨论】:
您是否从文档中看到this example? 我试过了,效果不大!! :(你能再帮我一次吗... 有几种方法可以做到这一点,您可以选择禁用输入字段或实现扩展器功能,然后使用该实现。 extender的实现非常简单易行。 【参考方案1】:您需要按如下方式创建淘汰赛自定义规则
ko.validation.rules["DateValidation"] =
validator: function (val)
var ageDifMs = Date.now() - val.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
var year = Math.abs(ageDate.getUTCFullYear() - 1970);
return (year < 18);
,
message: " "
;
ko.validation.registerExtenders();
然后你可以添加到你的扩展
self.Model.DateOfBirth = ko.observable().extend(
date: true,
required:
params: true,
message: "Please enter a date"
,
DateValidation:
message: "Override message"
);
【讨论】:
请您详细说明从今天开始我应该正确的代码以验证目前 18 岁及以上的人 ko.validation.rules["DateValidation"] = validator: function (val) if (Year>=2000) alert('Date Validated 18 Years and Above');返回真; // 自定义日期检查逻辑并返回真假 else , message: " " ;以上是关于出生日期小于 18 的淘汰赛 JS 验证的主要内容,如果未能解决你的问题,请参考以下文章