2013-04-18 9 views
27

मैं एक txtBox और उसके आईडी है: beginDateTxtUncaught त्रुटि: सिंटैक्स त्रुटि, गैर मान्यता प्राप्त अभिव्यक्ति: असमर्थित छद्म:

लेकिन JSF यह j_idt8:beginDateTxt

jQuery में

मैं कि

है जैसे कि यह तक पहुँचने की कोशिश करता है
<script type="text/javascript"> 
      $(document).ready(function() { 
       $(function() { 
        $("#j_idt8:beginDateTxt").mobiscroll().date({ 
         theme: 'android-ics light', mode:'scroller', display: 'bottom' 
        }); 
       }); 

      }); 
    </script> 

लेकिन मैं त्रुटि नीचे मिल:

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: beginDateTxt

क्यों?

उत्तर

54

आप की कोशिश कर सकते

$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'}); 

सामान्य jQuery में अपनी $() समारोह में CSS चयनकर्ताओं की तरह कुछ का उपयोग करता है। एक सीएसएस चयनकर्ता में : एक छद्म वर्ग को दर्शाता है। हालांकि, आपके मामले में : आईडी का सिर्फ एक हिस्सा है।

यदि आप जेनेरिक getElementById() का उपयोग करते हैं, तो तर्क विघटित नहीं है, लेकिन एक आईडी के रूप में देखा जाता है। तो getElementById() का उपयोग करके और $() के साथ परिणाम लपेटकर आप इस "गलतफहमी" को बाधित कर सकते हैं।

सामान्य तौर पर, मुझे लगता है कि आपके जेएसएफ में नेमस्पेसिंग योजना को बदलना बेहतर होगा।

संपादित

jQuery documentation on selectors कहा गया है कि आप \\ के उपयोग के द्वारा विशेष वर्ण से बचें चाहिए:

To use any of the meta-characters (such as !"#$%&'()*+,./:;<=>[email protected][]^`{|}~) as a literal part of a name, it must be escaped with with two backslashes: \. For example, an element with id="foo.bar" , can use the selector $("#foo\\.bar") .

यह जवाब पहले से ही डैनियल, द्वारा दिए गए के लिए नेतृत्व करेंगे जो मेरी राय में बेहतर है ऊपर दिए गए उत्तर के लिए। हालांकि, स्पष्टीकरण वैध बना हुआ है।

$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'}); 
+0

वास्तव में यह है! thx – user2294016

+1

मैंने सोचा कि हम jQuery चयनकर्ता का उपयोग कर रहे हैं, इसलिए हम getElementById – AaA

+2

@BobSort का उपयोग नहीं करते हैं, यहां समस्या यह थी कि आईडी में ':' शामिल था, जिसने jQuery को एक छद्म वर्ग का उपयोग किया और परिणामस्वरूप असफल रहा। घुसपैठ करने के लिए मैंने 'getElementById() 'का उपयोग किया, जो एक स्ट्रिंग के रूप में इसके तर्क को समझता है। – Sirko

26

आप \ (डबल भागने)

यहाँ से बचने के लिए \ साथ : बचने और उसके बाद करने के लिए की जरूरत है आप jQuery आईडी चयनकर्ता का उपयोग करना चाहते हैं:

$(function() { 
    $("#j_idt8\\:beginDateTxt").mobiscroll().date({ 
     theme: 'android-ics light', 
     mode:'scroller', display: 'bottom' 
    }); 
}); 
संबंधित मुद्दे

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