कैसे (प्रोटोटाइप का प्रयोग करके) पहले बच्चे प्रपत्र तत्व का चयन करने?

वोट
2

मैं कुछ है कि प्रोटोटाइप मुझे देता है, या सादे जावास्क्रिप्ट का उपयोग करते हुए, एक div में पहली फ़ॉर्म तत्व पर ध्यान केंद्रित करने के लिए सेट करने के लिए या तो चाहते हैं। मैं एक div जो फार्म तत्व शामिल हैं के लिए एक संदर्भ है। मैं अगर पहला रूप तत्व एक हो जाएगा पता नहीं है <input>, <select>या <textarea>नोड।

मैं इस तरह कुछ करना चाहता हूँ:

$('parentDiv').down('textarea, select, input').focus();

हालांकि, Element.down विधि, पहले पाठ क्षेत्र नोड लेने के लिए लगता है, भले ही पाठ क्षेत्र से पहले एक इनपुट नोड है।

वहाँ इस के चारों ओर एक सुंदर तरीका है? मुझे लगता है मैं माता पिता div के सभी सन्तान मिल सकता है, और उसके बाद हर एक को इन नोड्स में से एक की तलाश में अधिक पुनरावृति लगता है, लेकिन मुझे लगता है प्रोटोटाइप में यह करने के लिए एक अच्छा तरीका हो सकता है कि।

मैं, फार्म वस्तु के तरीकों का उपयोग नहीं कर सकते क्योंकि यह माता पिता div रूप का ही हिस्सा है। यह एक AJAX कॉल के माध्यम से पेज को जोड़ा जाता है, इसलिए जब div डोम में जोड़ा गया है, मैं नए जोड़े गए सेट में पहले क्षेत्र (जो नहीं पूरे रूप में पहले क्षेत्र सबसे अधिक संभावना है) पर ध्यान केंद्रित सेट करना चाहते हैं ।

धन्यवाद!

13/03/2009 को 17:58
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
4

जब मैं प्रोटोटाइप का इस्तेमाल किया मुझे यकीन है कि मैं कुछ इस तरह किया हूँ।

var firstElement = Form.findFirstElement(document.forms[0]);
if(firstElement !=null)
    firstElement.activate();

मैं के लिए अपने प्रपत्र विकल्प होगा document.forms[0]

प्रोटोटाइप भी की विधि है focusFirstElementपर Formवर्ग है, लेकिन मैं का उपयोग नहीं कर सकता है कि क्योंकि कुछ पृष्ठों मैं लोड होगा रूपों नहीं था। तुम सिर्फ कॉल करने के लिए सक्षम हो सकता है Form.focusFirstElement($(form));या किसी ऐसे ही बदलाव।

संपादित करें:
मैं तुम्हें तत्वों के विभिन्न प्रकार पर फ़ॉर्म एक्सटेंशन इस्तेमाल कर सकते हैं सोचा, लेकिन यह काम करने के लिए प्रकट नहीं होता है, फिर भी आप फार्म से कुछ लेने के लिए और यह सीधे आवेदन कर सकते हैं। के रूप में आप चाहते हैं निम्नलिखित कोड काम करना चाहिए।

var firstElement = Form.getElements($("parentDiv")).find(function(element) {
    return element.type != 'hidden' && !element.disabled &&
    ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
});
if(firstElement != null)
    firstElement.activate();
13/03/2009 को 18:01
का स्रोत उपयोगकर्ता

वोट
0

था वास्तव में pkeading रूप में एक ही सवाल - Quintin रॉबिन्सन संपादित जवाब की पुष्टि कर सकते हैं कि क्या pkeading चाहता है के लिए ठीक काम करता है

2 नोट:

  1. $("parentDiv") प्रपत्र तत्वों से युक्त div का उल्लेख करने की जरूरत है

  2. आप "उप-प्रपत्र" के साथ div को खोलने के लिए scriptaculous प्रभाव का उपयोग कर रहे हैं तो आप प्रभाव में एक afterFinish समारोह के भीतर कोड चलाने की आवश्यकता होगी:

    Effect.BlindDown(*YourDiv*,{
        duration:0.5,
        afterFinish: function() {
            var ff1=Form.getElements($(*YourDiv*)).find(
                    function(element){
                       return element.type != 'hidden' && !element.disabled && ['input', 'select', 'textarea'].include(element.tagName.toLowerCase())
                    }
            );
            if(ff1 != null) ff1.activate();
        }
    });
    
24/03/2010 को 12:07
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more