2009-10-09 10 views
7

मुझे पृष्ठ लोड करने पर बारोकोड स्कैनर का उपयोग करके मूल्य दर्ज करने की अनुमति देने के लिए इनपुट फोकस को एक विशिष्ट इनपुटटेक्स्ट घटक पर निर्देशित करने की आवश्यकता है।किसी जेएसएफ इनपुटटेक्स्ट पर फोकस सेट करना

सादे HTML में मैं बॉडी टैग में एक जावास्क्रिप्ट "ऑनलोड" हैंडलर जोड़ूंगा, लेकिन जेएसएफ में एक बेहतर तरीका होना चाहिए।

  1. "स्थिर" ऐसे मामलों में जहां एक ही नियंत्रण हर पृष्ठ लोड ध्यान केंद्रित प्राप्त करता है:

    "साफ" जिस तरह से करने के लिए इस लक्ष्य को हासिल करने के लिए क्या है।

  2. "गतिशील" मामले जहां यह प्रत्येक पृष्ठ लोड के लिए एक अलग नियंत्रण हो सकता है।

उत्तर

7

दिलचस्प सवाल।

ऐसा करने के लिए जेएसएफ में बॉक्स से कुछ भी नहीं है। आप पहले ही जानते हैं कि सादे एचटीएमएल/जावास्क्रिप्ट में इसे कैसे किया जाए और जेएसएफ इसके पागल आईडी के अलावा अन्य में कुछ भी नहीं जोड़ता है।

तो "स्थैतिक" पहुंच के लिए आपको बस यह सुनिश्चित करना होगा कि आप पूर्ण जेएसएफ आईडी उदा। "MyForm: mydiv: myinput"। यह बहुत साफ नहीं है जैसे कि आपका पृष्ठ बदलता है, तो संभव है कि यह आईडी भी बदलेगी।

आदर्श रूप से आपके पास एक जेएसएफ घटक होगा जो आप अपने <h:inputText> के अंदर घोंसला करेंगे जो इंगित करेगा कि फोकस आवश्यक था। उदाहरण के लिए:

<h:inputText value="#{whatever}"> 
    <my:focusComponent /> 
</h:inputText> 

तकनीकी रूप से, यह एक कठिन समाधान नहीं होगा। घटक को बस यह आईडी मिल जाएगी और उसके बाद कुछ जावास्क्रिप्ट जोड़ें जो उस पर फ़ोकस() को कॉल करता है।

सीम के <s:defaultAction/> घटक के साथ कुछ समान है जो एक कुंजी या बटन को एंटर कुंजी का जवाब देता है। आप उस के स्रोत कोड को देखना चाह सकते हैं।

+0

मुझे आपके गतिशील समाधान पसंद हैं। यदि कुछ जगह पर ध्यान केंद्रित करने के लिए नियंत्रण होता है तो इसमें कुछ सीमाएं होती हैं, लेकिन यह मेरी स्थिति में पर्याप्त है। धन्यवाद! – Timo

+0

यदि आप अपना स्वयं का असाइन करते हैं तो जेएसएफ आईडी पागल नहीं हैं। :-) बस इसे अपने आप बनाने की अनुमति न दें! साइड नोट के रूप में, ऐप्पल iDevices जावास्क्रिप्ट से विंडो लोड के दौरान इनपुट के लिए फ़ोकस सेट करने के प्रयासों को अनदेखा कर रहा है। सामान्य वेब ब्राउज़िंग के संदर्भ से समझ में आता है, लेकिन कस्टम वेब ऐप्स बनाने की कोशिश करते समय बहुत परेशान होता है (विशेष रूप से इनपुट के लिए बारकोड स्कैनर का उपयोग करने वाले)। –

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