Custom date format with jQuery validation plugin
如何指定自定义日期格式以使用 jQuery 验证插件进行验证?
您可以使用
1
2 3 4 5 6 7 8 |
$.validator.addMethod(
"australianDate", function(value, element) { // put your own logic here, this is just a (crappy) example return value.match(/^//d//d?/////d//d?/////d//d//d//d$/); }, "Please enter a date in the format dd/mm/yyyy." ); |
然后在你的表单上添加:
1
2 3 4 5 6 7 8 9 |
$(‘#myForm’)
.validate({ rules : { myDate : { australianDate : true } } }) ; |
nickf// 的回答很好,但请注意,验证插件已经在附加方法.js 文件中包含了其他几种日期格式的验证器。在您自己编写之前,请确保尚未有人这样做。
我个人使用非常好的 http://www.datejs.com/ 库。
Docco 在这里:http://code.google.com/p/datejs/wiki/APIDocumentation
您可以使用以下方法获取澳大利亚格式,并在 29/02/2012 而不是 29/02/2011 验证闰日:
1
2 3 4 5 6 7 8 9 |
jQuery.validator.addMethod("australianDate", function(value, element) { return Date.parseExact(value,"d/M/yyyy"); }); $("#myForm").validate({ |
我还使用屏蔽输入插件来标准化数据 http://digitalbush.com/projects/masked-input-plugin/
1
|
$("#birth_date").mask("99/99/9999");
|
这是一个新的验证方法的例子,它可以验证几乎所有的日期格式,包括:
- dd/mm/yy 或 dd/mm/yyyy
- dd.mm.yy 或 dd.mm.yyyy
- dd,mm,yy 或 dd,mm,yyyy
- dd mm yy 或 dd mm yyyy
- dd-mm-yy 或 dd-mm-yyyy
然后,当您将值传递给 php 时,您可以使用 strtotime
进行转换
添加方法如下:
1
2 3 4 5 6 |
$.validator.addMethod("anyDate",
function(value, element) { return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2])[/., -](19|20)?//d{2}$/); }, "Please enter a date in the format!" ); |
然后你添加新的过滤器:
1
2 3 4 5 6 7 8 |
$(‘#myForm’)
.validate({ rules : { field: { anyDate: true } } }) |
;
这是一个最近对我有用的特定代码示例:
1
2 3 4 5 6 7 8 9 10 11 12 |
// Replace the builtin US date validation with UK date validation
$.validator.addMethod( "date", function ( value, element ) { var bits = value.match( /([0-9]+)/gi ), str; if ( ! bits ) return this.optional(element) || false; str = bits[ 1 ] + ‘/’ + bits[ 0 ] + ‘/’ + bits[ 2 ]; return this.optional(element) || !/Invalid|NaN/.test(new Date( str )); }, "Please enter a date in the format dd/mm/yyyy" ); |
我应该注意到这实际上取代了内置的日期验证例程,尽管我看不出这会导致当前插件出现问题。
然后我将它应用到表单中:
1
|
$( ‘#my_form input.date’ ).rules( ‘add’, { date: true } );
|
这是我结合/修改以前的帖子以达到我想要的结果:
1
2 3 4 5 6 7 8 9 |
// Override built-in date validator
$.validator.addMethod( "date", function (value, element) { //Return NB: isRequired is not checked at this stage return (value=="")? true : isDate(value); }, "* invalid" ); |
在您的验证配置之后添加日期验证。 IE。在调用 $(form).validate({ … }) 方法之后。
1
2 3 4 5 6 |
//Add date validation (if applicable)
$(‘.date’, $(frmPanelBtnId)).each(function () { $(this).rules(‘add’, { date: true }); }); |
最后将主要的isDate Javascript函数修改为UK Date Format
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//Validates a date input — http://jquerybyexample.blogspot.com/2011/12/validate-date- using-jquery.html function isDate(txtDate) { var currVal = txtDate; if (currVal == ”) return false; //Declare Regex if (dtArray == null) //Checks for dd/mm/yyyy format. if (dtMonth < 1 || dtMonth > 12) return true; |
乔恩,你有一些语法错误,见下文,这对我有用。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<script type="text/javascript">
$(document).ready(function () { $.validator.addMethod( $(‘#testForm’).validate({ }); |
1
2 3 4 5 |
$.validator.addMethod("mydate", function (value, element) {
return this.optional(element) || /^(//d{4})(-|///)(([0-1]{1})([1-2]{1})|([0]{1})([0-9]{1}))(-|///)(([0-2]{1})([1-9]{1})|([3]{1})([0-1]{1}))/.test(value); }); |
你可以像
但无法判断月份的大小,即 2 月 28 或 29 天。
@blasteralfred:
我得到以下规则为我验证正确的日期 (DD MM YYYY)
1
2 3 4 5 6 |
jQuery.validator.addMethod(
"validDate", function(value, element) { return value.match(/(?:0[1-9]|[12][0-9]|3[01]) (?:0[1-9]|1[0-2]) (?:19|20//d{2})/); }, "Please enter a valid date in the format DD MM YYYY" |
);
对于 DD/MM/YYYY
1
2 3 4 5 6 |
jQuery.validator.addMethod(
"validDate", function(value, element) { return value.match(/(?:0[1-9]|[12][0-9]|3[01])///(?:0[1-9]|1[0-2])///(?:19|20//d{2})/); }, "Please enter a valid date in the format DD/MM/YYYY" |
);
这不会验证 2017 年 1 月 13 日和 2017 年 1 月 13 日。
也不验证 50 12 2017 和 50/12/2017。
很简单,示例:适用于 HTML5 自动 type=”date”.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js">
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/additional-methods.min.js"> <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/localization/messages_es.js"> $(function () { // Overload method default"date" jquery.validate.min.js // Form Demo jquery.validate.min.js }); |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268750.html