ध्यान देने के लिए घटना पर्यवेक्षक बनाएँ?

वोट
12

यह protoype में ध्यान केंद्रित घटनाओं बुलबुला है करने के लिए संभव है?

मैं हर इनपुट तत्व पर एक पर्यवेक्षक आवंटित करने के लिए हो रही रोकने के लिए कोशिश कर रहा हूँ।

<script language=javascript type=text/javascript>
document.observe('dom:loaded', function() {

    // Doesn't work
    $('editForm').observe('focus', function(evnt){
        console.log('FOCUS!');
    });

    // Works
    $('editForm').select('INPUT').each(function(elem) {
        elem.observe('focus', function(evnt){
            console.log('FOCUS!');
        });
    });

}); 
</script>

<form method=post name=editForm id=editForm action=>
<input type=text name=foobar />
</form>
21/05/2009 को 16:00
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
25

ध्यान केंद्रित करने और कलंक घटनाओं बुलबुला नहीं है।

आप चरण पर कब्जा करने के दौरान घटना हैंडलर सक्रिय कर सकता है। जब मानक डोम तरीकों का उपयोग कर, आप लिखते थे

document.addEventListener('focus',function(e){/*some code */}, true);

'सही' मूल्य यहाँ सबसे महत्वपूर्ण है।

समस्या यह है कि आईई घटना प्रचार का कब्जा चरण का समर्थन नहीं करता है, लेकिन IE के लिए आप Focusin उपयोग कर सकते हैं घटनाओं, जो focusout - फोकस और कलंक की घटनाओं के विपरीत - बुलबुला है। मैं एक पढ़ने की सलाह देते लेख इस विषय पीटर पॉल कोच द्वारा लिखित पर। अन्य ब्राउज़रों (फ़ायरफ़ॉक्स, ओपेरा, सफारी) शायद (मैं इसे परीक्षण नहीं किया है) DOMFocusIn, DOMFocusOut जो IE के Focusin के लिए और घटनाओं focusout समकक्ष हैं की तरह समर्थन घटनाओं।

21/05/2009 को 16:16
का स्रोत उपयोगकर्ता

वोट
5

आप इस का उपयोग कर सकते हैं:

function focusInHandler(event){
    Event.element(event).fire("focus:in");
}
function focusOutHandler(event){
    Event.element(event).fire("focus:out");
}

if (document.addEventListener){
    document.addEventListener("focus", focusInHandler, true);
    document.addEventListener("blur", focusOutHandler, true);
} else {
    document.observe("focusin", focusInHandler);
    document.observe("focusout", focusOutHandler);
}

document.observe('focus:in', function(event) {
    // Your code
});

मेरे jsFiddle: http://jsfiddle.net/EpokK/k7RPE/3/

13/05/2013 को 14:31
का स्रोत उपयोगकर्ता

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