मैं jQuery के लिए मान्यकरण प्लगइन के साथ मान्य होने के लिए कस्टम तिथि कैसे निर्दिष्ट कर सकता हूं ?
मैं jQuery के लिए मान्यकरण प्लगइन के साथ मान्य होने के लिए कस्टम तिथि कैसे निर्दिष्ट कर सकता हूं ?
जवाबों:
आप addMethod
फ़ंक्शन का उपयोग करके अपनी स्वयं की कस्टम सत्यापन विधि बना सकते हैं । आप "dd / mm / yyyy" को मान्य करना चाहते थे:
$.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."
);
और फिर अपने फॉर्म ऐड में:
$('#myForm')
.validate({
rules : {
myDate : {
australianDate : true
}
}
})
;
myDate
तारीख इनपुट फ़ील्ड के नाम में बदलना चाहिए ।
निकफ का उत्तर अच्छा है, लेकिन ध्यान दें कि सत्यापन प्लग-इन में पहले से ही कई अन्य दिनांक प्रारूपों के लिए सत्यापनकर्ता शामिल हैं, अतिरिक्त-मेथड्स.जेएस फ़ाइल में। इससे पहले कि आप अपना स्वयं का लिखें, सुनिश्चित करें कि किसी ने पहले से ही ऐसा नहीं किया है।
मैं व्यक्तिगत रूप से बहुत अच्छे http://www.datejs.com/ लाइब्रेरी का उपयोग करता हूं ।
यहाँ डोको http://code.google.com/p/datejs/wiki/APIDocumentation
आप अपने ऑस्ट्रेलियाई प्रारूप को प्राप्त करने के लिए निम्नलिखित का उपयोग कर सकते हैं और छलांग दिन 29/02/2012 और 29/02/2011 को मान्य करेंगे:
jQuery.validator.addMethod("australianDate", function(value, element) {
return Date.parseExact(value, "d/M/yyyy");
});
$("#myForm").validate({
rules : {
birth_date : { australianDate : true }
}
});
मैं http://digitalbush.com/projects/masked-input-plugin/ डेटा मानकीकृत करने के लिए नकाबपोश इनपुट प्लगइन का भी उपयोग करता हूं
$("#birth_date").mask("99/99/9999");
यहाँ एक नया सत्यापन विधि के लिए एक उदाहरण है जो लगभग किसी भी तारीख प्रारूप को मान्य करेगा, जिसमें शामिल हैं:
फिर, जब आप php को मान पास करते हैं तो आप इसे स्ट्रेटोटाइम से बदल सकते हैं
यहाँ विधि जोड़ने का तरीका बताया गया है:
$.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!"
);
फिर आप नया फ़िल्टर जोड़ते हैं:
$('#myForm')
.validate({
rules : {
field: {
anyDate: true
}
}
})
;
mmm
, मैंने regex को थोड़ा संशोधित किया है/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2]|[a-zA-Z]{3})[/., -](19|20)?\d{2}$/
यहाँ एक विशिष्ट कोड नमूना है जो मेरे लिए हाल ही में काम किया है:
// 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"
);
मुझे ध्यान देना चाहिए कि यह वास्तव में बिल्ट-इन-डेट सत्यापन रूटीन को बदल देता है, हालांकि मैं यह नहीं देख सकता था कि यह वर्तमान प्लगइन के साथ एक समस्या का कारण होना चाहिए।
मैंने तब इसका उपयोग करके फॉर्म पर लागू किया:
$( '#my_form input.date' ).rules( 'add', { date: true } );
यह मेरा वांछित परिणाम प्राप्त करने के लिए पिछली पोस्टों को संयोजित / संशोधित करना है:
// 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"
);
अपने सत्यापन के बाद दिनांक सत्यापन जोड़ें। $ (फॉर्म) (.validate) ({...}) विधि को कॉल करने के बाद Ie।
//Add date validation (if applicable)
$('.date', $(frmPanelBtnId)).each(function () {
$(this).rules('add', {
date: true
});
});
अंत में, यूके डेट फॉर्मेट के लिए मुख्य डीट जावास्क्रिप्ट फ़ंक्शन को संशोधित किया गया है
//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
var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
var dtArray = currVal.match(rxDatePattern); // is format OK?
if (dtArray == null)
return false;
//Checks for dd/mm/yyyy format.
var dtDay = dtArray[1];
var dtMonth = dtArray[3];
var dtYear = dtArray[5];
if (dtMonth < 1 || dtMonth > 12)
return false;
else if (dtDay < 1 || dtDay > 31)
return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
return false;
else if (dtMonth == 2) {
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap))
return false;
}
return true;
}
जॉन, आपके पास कुछ सिंटैक्स त्रुटियां हैं, नीचे देखें, यह मेरे लिए काम करता है।
<script type="text/javascript">
$(document).ready(function () {
$.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"
);
$('#testForm').validate({
rules: {
"myDate": {
australianDate: true
}
}
});
});
$.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);
});
आप भी इनपुट कर सकते yyyy-mm-dd
हैंyyyy/mm/dd
लेकिन केवल 28 या 29 दिनों में कुछ महीने फरवरी के आकार का न्याय नहीं कर सकते।
बाहर की जाँच करें: jQuery मास्क इनपुट प्लगइन
@blasteralfred:
मुझे निम्नलिखित नियम मिला है जो मेरे लिए सही तिथि को मान्य करता है (DD MM YYYY)
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 के लिए
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"
);
यह 01 13 2017 और 01/13/2017 को मान्य नहीं होगा।
और 50 12 2017 और 50/12/2017 को भी मान्य नहीं करता है।
आसान है, उदाहरण: HTML5 स्वचालित प्रकार = "तिथि" के लिए मान्य ।
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/additional-methods.min.js"></script>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/localization/messages_es.js"></script>
$(function () {
// Overload method default "date" jquery.validate.min.js
$.validator.addMethod(
"date",
function(value, element) {
var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/;
return value.match(dateReg);
},
"Invalid date"
);
// Form Demo jquery.validate.min.js
$('#form-datos').validate({
submitHandler: function(form) {
form.submit();
}
});
});
// put your own logic here, this is just a (crappy) example