2012-03-19 6 views
6

मैं jQuery के डेटपिकर और एएसपीनेट एमवीसी 4 का उपयोग कर रहा हूं। डेटपिकर फ़ायरफ़ॉक्स में काम करता है लेकिन आईई 7 में मुझे एएसपीनेट के सत्यापन के माध्यम से संदेश मिलता है कि फ़ील्ड एक तिथि नहीं है।jQuery डेटपिकर के लिए क्षेत्रीय सेटिंग्स को कैसे ठीक करें ताकि यह फ़ायरफ़ॉक्स और आईई 7 में काम करे?

इस datepicker

if (!Modernizr.inputtypes.date) { 
     $(function() { 
      $.datepicker.setDefaults($.datepicker.regional['en-GB']); 
      $(".datefield").datepicker(); 
     }); 
    } 

के लिए कोड है यह Web.config

<globalization uiCulture="en-GB" culture="en-GB" />

जैसे मेरी भूमंडलीकरण सेटिंग है फ़ायरफ़ॉक्स में दिनांक "1 9/03/2012" स्ट्रिंग के रूप में दिखाया गया है और एएसपीनेट के सत्यापन सेटअप (क्लाइंट और सर्वर पक्ष) द्वारा स्वीकार किया गया है। आईई 7 में उसी तारीख स्ट्रिंग को क्लाइंट पर स्वीकार नहीं किया जाता है। यदि मैं इसे "03/19/2012" में बदलता हूं तो क्लाइंट तिथि स्वीकार करता है लेकिन फिर सर्वर अपवाद फेंकता है - "अमान्य ऑपरेशन अपवाद। निरर्थक ऑब्जेक्ट का मान होना चाहिए।"

मेरा विचार मॉडल एक शून्य-सक्षम डेटटाइम का उपयोग करता है जिसे मैंने नियंत्रक पोस्ट एक्शन में एक गैर-सक्षम-सक्षम दिनांक समय पर डाला। यह फ़ायरफ़ॉक्स में काम करता है लेकिन आईई 7 में दृश्य से तारीख के लिए मूल्य मॉडल शून्य है। समस्या क्या है?

+1

डारिन डिमिट्रोव का सही उत्तर है लेकिन मेरे ट्यूटोरियल http://www.asp.net/mvc/tutorials/javascript/using-the-html5-and-jquery-ui-datepicker-popup-calendar- साथ-aspnet-mvc/use-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-1 – RickAndMSFT

+0

धन्यवाद, मैंने पहले से ही आपके ठीक ट्यूटोरियल का उपयोग पहले से ही किया है खजूर बीनने वाला।लेकिन यह वैश्वीकरण के मुद्दों से निपटता नहीं है। – mrt181

उत्तर

13

निम्न पंक्ति कुछ नहीं करता है:

$.datepicker.setDefaults($.datepicker.regional['en-GB']); 

अगर आप corresponding language file जो ASP.NET MVC 4 टेम्पलेट में डिफ़ॉल्ट रूप से शामिल नहीं है शामिल नहीं हैं।

आप स्पष्ट रूप से प्रारूप सेट करने का प्रयास हो सकता है:

$.datepicker.setDefaults({ dateFormat: 'dd/mm/yy' }); 

लेकिन यह केवल चिंताओं कैसे तारीख datepicker में चयन के बाद प्रारूप में होना चाहिए। इसका सत्यापन के साथ कुछ लेना देना नहीं है।

क्लाइंट साइड सत्यापन jquery.validate प्लगइन द्वारा किया जाता है जो बदले में ब्राउज़र को वर्तमान में कॉन्फ़िगर किया गया संस्कृति का उपयोग करता है (जो कि एफएफ और आईई के बीच दिखाई देने वाली विसंगतियों को समझा सकता है, उदाहरण के लिए एक को एन-जीबी का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है और अन्य एन-यूएस) या आईएसओ तिथियां।

आप इस कस्टम मान्यता को ओवरराइड और यह अपने कस्टम स्वरूप का उपयोग सुनिश्चित करने के लिए है कि इस पार ब्राउज़र काम करेंगे बना सकता है:

http://nuget.org/packages/jQuery.UI.i18n

बस:

if (!Modernizr.inputtypes.date) { 
    $(function() { 
     $.datepicker.setDefaults({ dateFormat: 'dd/mm/yy' }); 
     $('.datefield').datepicker(); 
    }); 

    jQuery.validator.addMethod(
     'date', 
     function (value, element, params) { 
      if (this.optional(element)) { 
       return true; 
      }; 
      var result = false; 
      try { 
       $.datepicker.parseDate('dd/mm/yy', value); 
       result = true; 
      } catch (err) { 
       result = false; 
      } 
      return result; 
     }, 
     '' 
    ); 
} 
+0

मैं कोड में सही डेटपिकर भाषा फ़ाइल कैसे शामिल करूं? भाषा फाइलें पहले से ही मेरी स्क्रिप्ट निर्देशिका के उपनिर्देशिका (i18n) में हैं। – mrt181

+0

@ mrt181, आह क्षमा करें, मैंने सोचा कि आपके पास उन फाइलें नहीं हैं। आप उन्हें एक ही जावास्क्रिप्ट फ़ाइल शामिल करने के समान तरीके से शामिल करते हैं: 'स्क्रिप्ट' टैग का उपयोग करके। –

+0

मेरे पास यह मेरे कोड ' ' – mrt181

2

Jquery स्थानीयकरण फ़ाइलों में उपलब्ध हैं रन:

इंस्टॉल-पैकेज jQuery.UI.i18n और एक स्क्रिप्ट संदर्भ जोड़ने "स्क्रिप्ट/jQuery-ui-i18n.js"

से पैकेज प्रबंधक कंसोल

, तो यह काम करेगा: $ .datepicker.setDefaults ($ datepicker.regional [ 'en-GB। ']);

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