जवाबों:
बस fusions जवाब का विस्तार। यह एक्सटेंशन विधि jQuery के मान्य प्लगइन का उपयोग करके काम करती है। यह दिनांक और संख्याओं को मान्य करेगा
jQuery.validator.addMethod("greaterThan",
function(value, element, params) {
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(params).val());
}
return isNaN(value) && isNaN($(params).val())
|| (Number(value) > Number($(params).val()));
},'Must be greater than {0}.');
इसके प्रयेाग के लिए:
$("#EndDate").rules('add', { greaterThan: "#StartDate" });
या
$("form").validate({
rules: {
EndDate: { greaterThan: "#StartDate" }
}
});
code
अगर (मान == 0) {वापसी सच है; } और अगर (! / अमान्य | NaN / ...code
var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());
if (startDate < endDate){
// Do something
}
मुझे यह सोचना चाहिए
पार्टी में थोड़ा लेट हो गया लेकिन यहां मेरा हिस्सा है
Date.parse(fromDate) > Date.parse(toDate)
यहाँ विस्तार है:
var from = $("#from").val();
var to = $("#to").val();
if(Date.parse(from) > Date.parse(to)){
alert("Invalid Date Range");
}
else{
alert("Valid date Range");
}
संदर्भ jquery.validate.js और jquery-1.2.6.js। अपनी आरंभ तिथि टेक्स्टबॉक्स में एक आरंभिक कक्षा जोड़ें। अपनी अंतिम तिथि के पाठ बॉक्स में एक EndDate वर्ग जोड़ें।
इस स्क्रिप्ट ब्लॉक को अपने पेज में जोड़ें: -
<script type="text/javascript">
$(document).ready(function() {
$.validator.addMethod("endDate", function(value, element) {
var startDate = $('.startDate').val();
return Date.parse(startDate) <= Date.parse(value) || value == "";
}, "* End date must be after start date");
$('#formId').validate();
});
</script>
उम्मीद है की यह मदद करेगा :-)
मैं सिर्फ डांटुनो के जवाब के साथ छेड़छाड़ कर रहा था और पाया कि अच्छे इरादों के साथ, दुख की बात है कि यह कई ब्राउज़रों पर टूट गया है जो आईई नहीं है । ऐसा इसलिए है क्योंकि IE इस बारे में काफी सख्त होगा कि यह Date
कंस्ट्रक्टर के तर्क के रूप में क्या स्वीकार करता है , लेकिन अन्य नहीं करेंगे। उदाहरण के लिए, क्रोम 18 देता है
> new Date("66")
Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)
यह कोड "तुलना दिनांक" पथ लेने का कारण बनता है और यह सब वहां से डाउनहिल हो जाता है (जैसे new Date("11")
कि इससे अधिक है new Date("66")
और यह स्पष्ट रूप से वांछित प्रभाव के विपरीत है)।
इसलिए विचार करने के बाद मैंने "तिथियों" पथ पर "संख्याओं" पथ को प्राथमिकता देने के लिए कोड को संशोधित किया और पुष्टि की कि इनपुट वास्तव में जावास्क्रिप्ट में निर्दिष्ट उत्कृष्ट विधि के साथ संख्यात्मक है - जावास्क्रिप्ट () में ।
अंत में, कोड बन जाता है:
$.validator.addMethod(
"greaterThan",
function(value, element, params) {
var target = $(params).val();
var isValueNumeric = !isNaN(parseFloat(value)) && isFinite(value);
var isTargetNumeric = !isNaN(parseFloat(target)) && isFinite(target);
if (isValueNumeric && isTargetNumeric) {
return Number(value) > Number(target);
}
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date(target);
}
return false;
},
'Must be greater than {0}.');
पाठ फ़ील्ड से दिनांक मानों को jquery के .val () विधि द्वारा प्राप्त किया जा सकता है
var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();
मैं उन्हें तुलना करने से पहले तारीख के तार को पार्स करने की जोरदार सलाह दूंगा। जावास्क्रिप्ट की तिथि ऑब्जेक्ट में एक पार्स () - विधि है, लेकिन यह केवल यूएस दिनांक प्रारूपों (YYYY / MM / DD) का समर्थन करता है। यह यूनिक्स युग की शुरुआत से मिलीसेकंड देता है, इसलिए आप बस> या <के साथ अपने मूल्यों की तुलना कर सकते हैं।
यदि आप अलग-अलग प्रारूप चाहते हैं (उदाहरण के लिए आईएसओ 8661), तो आपको नियमित अभिव्यक्ति या मुफ्त तारीख का उपयोग करने की आवश्यकता है। पुस्तकालय।
यदि आप सुपर-उपयोगकर्ता बनना चाहते हैं, तो आप टेक्स्टफील्ड के बजाय jquery ui डेटपिकर्स का उपयोग कर सकते हैं। एक डेटपिकर वैरिएंट है जो डेट रेंज में प्रवेश करने की अनुमति देता है:
http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
इसलिए मुझे इस नियम के वैकल्पिक होने की आवश्यकता थी और उपरोक्त सुझावों में से कोई भी वैकल्पिक नहीं है। यदि मैं उस विधि को कहता हूं जो आवश्यकता के अनुसार दिखाई दे रही है, भले ही मैंने इसे मान की आवश्यकता के लिए सेट किया हो।
यह मेरा आह्वान है:
$("#my_form").validate({
rules: {
"end_date": {
required: function(element) {return ($("#end_date").val()!="");},
greaterStart: "#start_date"
}
}
});//validate()
मेरा addMethod
माइक ई के टॉप रेटेड उत्तर के रूप में मजबूत नहीं है, लेकिन मैं तारीख चयन के लिए मजबूर करने के लिए जेक्वेरीयू डेटपिकर का उपयोग कर रहा हूं। अगर कोई मुझे बता सकता है कि यह सुनिश्चित करने के लिए कि तिथियां संख्याएं हैं और विधि वैकल्पिक है जो बहुत अच्छा होगा, लेकिन अभी के लिए यह विधि निम्नलिखित है:
jQuery.validator.addMethod("greaterStart", function (value, element, params) {
return this.optional(element) || new Date(value) >= new Date($(params).val());
},'Must be greater than start date.');
जावास्क्रिप्ट / jquery में, ज्यादातर डेवलपर तारीख प्रारूप में परिवर्तित किए बिना, स्ट्रिंग की तुलना की गई तिथि से तिथि का उपयोग करता है। तारीख से तुलना करने का सबसे सरल तरीका अधिक तारीख है।
Date.parse(fromDate) > Date.parse(toDate)
सटीक परिणाम प्राप्त करने के लिए तुलना करने से पहले और तिथि से हमेशा पार्स करें
मुझे पसंद है कि फ्रांज ने क्या कहा, क्योंकि मैं जो उपयोग कर रहा हूं: पी
var date_ini = new Date($('#id_date_ini').val()).getTime();
var date_end = new Date($('#id_date_end').val()).getTime();
if (isNaN(date_ini)) {
// error date_ini;
}
if (isNaN(date_end)) {
// error date_end;
}
if (date_ini > date_end) {
// do something;
}
$(document).ready(function(){
$("#txtFromDate").datepicker({
minDate: 0,
maxDate: "+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtToDate").datepicker("option","minDate", selected)
}
});
$("#txtToDate").datepicker({
minDate: 0,
maxDate:"+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtFromDate").datepicker("option","maxDate", selected)
}
});
});
या इस लिंक पर जाएँ
jQuery('#from_date').on('change', function(){
var date = $(this).val();
jQuery('#to_date').datetimepicker({minDate: date});
});
function endDate(){
$.validator.addMethod("endDate", function(value, element) {
var params = '.startDate';
if($(element).parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(element).parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) > parseFloat($(element).parent().parent().find(params).val())) || value == "";
}else{
return true;
}
},jQuery.format('must be greater than start date'));
}
function startDate(){
$.validator.addMethod("startDate", function(value, element) {
var params = '.endDate';
if($(element).parent().parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) < new Date($(element).parent().parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) < parseFloat($(element).parent().parent().find(params).val())) || value == "";
}
else{
return true;
}
}, jQuery.format('must be less than end date'));
}
आशा है कि यह मदद करेगा :)
पहले आप विभाजन फ़ंक्शन का उपयोग करके दो इनपुट बॉक्स के मूल्यों को विभाजित करते हैं। फिर उसी को उल्टे क्रम में रखें। राष्ट्र के बाद इसे पूर्णांक के लिए पार्स करता है। तो दो मानों की तुलना यदि कथन में है। जैसे .1> 20-11-2018 2> 21-11-2018
20181120 और 20181121 की तुलना के लिए नए मूल्यों को विभाजित और संक्षिप्त करने के बाद उसी की तुलना करें।
var date1 = $('#datevalue1').val();
var date2 = $('#datevalue2').val();
var d1 = date1.split("-");
var d2 = date2.split("-");
d1 = d1[2].concat(d1[1], d1[0]);
d2 = d2[2].concat(d2[1], d2[0]);
if (parseInt(d1) > parseInt(d2)) {
$('#fromdatepicker').val('');
} else {
}
यह काम करना चाहिए
$.validator.addMethod("endDate", function(value, element) {
var startDate = $('#date_open').val();
return Date.parse(startDate) <= Date.parse(value) || value == "";
}, "* End date must be after start date");
यदि प्रारूप सही होने की गारंटी है YYYY / MM / DD और दो क्षेत्रों के बीच समान है तो आप उपयोग कर सकते हैं:
if (startdate > enddate) {
alert('error'
}
एक स्ट्रिंग तुलना के रूप में