2013-06-12 7 views
5

से जांचता है कि मैं यह जांचने की कोशिश कर रहा हूं कि jQuery UI डेटपिकर की तारीख छुट्टियों की तिथियों की एक सरणी से संबंधित है या नहीं। को समझ नहीं सकता मैं गलत क्या कर रहा :(चेकिंग दिनांक दिनांक

var holidayArray2013 = [new Date('October 3, 2013 00:00:00 GMT+0200'), new Date('December 25, 2013 00:00:00 GMT+0100'), new Date('December 26, 2013 00:00:00 GMT+0100')]; 
var DateOfOrder = $('#datepicker').datepicker('getDate'); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) { 
    console.log("is holiday"); 
} 

संपादित करें: console.log(DateOfOrder); रिटर्न Thu Oct 03 2013 00:00:00 GMT+0200 सिर्फ holidayArray2013[0] की तरह लेकिन $.inArray(DateOfOrder, holidayArray2013) अभी भी -1

+2

देखें और न ही हम जब तक आप हमें बता सकते हैं यदि कोई त्रुटि होती है, या शायद परिणाम आप उम्मीद कर दे नहीं। – Jamiec

+1

'DateOfOrder' का मूल्य क्या है? –

+1

आप दो अलग-अलग वस्तुओं की तलाश में हैं, भले ही वे एक ही तिथि हो। आपको तिथियों को एक स्ट्रिंग के रूप में स्टोर करने और स्ट्रिंग (एक संभावित तरीका) की खोज करने की आवश्यकता होगी। – Xotic750

उत्तर

16

आप एक झूठी नकारात्मक हो रही है क्योंकि 2 तारीख वस्तुओं की तुलना तुलना रिटर्न उनके संदर्भ और नहीं उनके मूल्यों के रूप में आप शायद उम्मीद थी।

वहाँ कुछ ही विकल्प हैं, तो आपका परिणाम संग्रहीत कर सकती हैअपने सरणी में जो सिर्फ तारीख का एक अंकीय प्रदर्शन है:

var holidayArray2013 = [ 
     new Date('October 3, 2013 00:00:00 GMT+0200').getTime(), 
     new Date('December 25, 2013 00:00:00 GMT+0100').getTime(), 
     new Date('December 26, 2013 00:00:00 GMT+0100').getTime()]; 

और फिर कि तुलना:

var DateOfOrder = n$('#datepicker').datepicker('getDate').getTime(); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) ... 

यह ठीक है, काम करता, जैसा कि यहाँ का प्रदर्शन किया: http://jsfiddle.net/rRJer/

अगर, हालांकि आप छुट्टियों की सरणी को बदलने के लिए बाध्य नहीं हैं, आप सही तिथि मान का पता लगाने के लिए लूप कर सकते हैं:

var isHoliday = false; 
for(var i=0;i<holidayArray2013.length;i++){ 
    if(holidayArray2013[i].getTime() == DateOfOrder.getTime()){ 
     isHoliday = true; 
     break; 
    } 
} 

डेमो यहाँ है: http://jsfiddle.net/3R6GD/

+0

धन्यवाद जैमी, यह सबसे सटीक उत्तर होने और मुझे आवश्यक विकल्प प्रदान करने के लिए स्वीकार किया गया। – foozed

1

जांच इस http://jsfiddle.net/WNYRs/

var holidayArray2013 = [new Date('October 3, 2013 00:00:00 GMT+0200').getTime(), 
         new Date('December 25, 2013 00:00:00 GMT+0100').getTime(), 
         new Date('December 26, 2013 00:00:00 GMT+0100').getTime()]; 

और का उपयोग कुछ है कि जैसे:

var DateOfOrder = new Date($('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val()).getTime(); 

आप Date.getTime() उपयोग करने के लिए दो तिथियों तुलना करने के लिए है, यह देखें: How to compare two date values with jQuery

0

आप .valueOf() फ़ंक्शन का उपयोग कर सकते हैं अपनी तिथियाँ से अधिक है, तो $.inArray काम करेगा:

var holidayArray2013 = [ 
    new Date('October 3, 2013 00:00:00 GMT+0200').valueOf(), 
    new Date('December 25, 2013 00:00:00 GMT+0100').valueOf(), 
    new Date('December 26, 2013 00:00:00 GMT+0100').valueOf() ]; 

var DateOfOrder = $('#datepicker').datepicker('getDate').valueOf(); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) { 
    console.log("is holiday"); 
} 

http://jsfiddle.net/mmeRD/

संबंधित मुद्दे