2011-06-23 17 views
7

अगर मैं वर्तमान में jQuery में टेक्स्टबॉक्स पर केंद्रित हूं तो मैं ऑनब्लूर ईवेंट से पहले ऑनक्लिक ईवेंट कैसे आग लगा सकता हूं?jQuery: onblur से पहले पहले कैसे आग लगाना है?

अपेक्षित आउटपुट: बटन को फ़ायरबॉक्स में धुंधला ईवेंट से पहले पहले ईवेंट पर क्लिक करें। अलर्ट "mybtn onclick चेतावनी"

डेमो:http://jsfiddle.net/Zk8Fg/

कोड:

<input type="text" name="fname" id="fname" value="" /><br /> 
<input type="button" name="mybtn" id="mybtn" value="Click Me" /> 

<script language="javascript"> 
$(document).ready(function() { 
    myFunc(); 
}); 

function myFunc() { 
    $('#fname').focus().blur(function() { 
     alert('fname onblur alert'); 
    }); 

    $('#mybtn').click(function() { 
     alert('mybtn onclick alert'); 
    }); 
} 
</script> 

धन्यवाद :)

+0

आप '$। फ़ोकस()। Blur()' के साथ क्या करने का प्रयास कर रहे हैं? – Sampson

+1

क्या मैं पूछ सकता हूं कि क्यों और/या आप क्या करने की कोशिश कर रहे हैं? शायद कोई कुछ विकल्प सुझाएगा? यूआई घटनाक्रम कुछ निश्चित आदेश होता है और मुझे नहीं लगता कि इसे बदला जा सकता है। –

+0

@ जोनाथन: मेरे पास वर्तमान में टेक्स्टबॉक्स पर केंद्रित धुंधला घटना पर एक सत्यापन है, लेकिन धुंध परिदृश्य एक बार मैंने बटन पर क्लिक किया है, तो धुंध घटना क्लिक ईवेंट से पहले आग लगती है। – marknt15

उत्तर

3

इनपुट क्षेत्र वर्तमान में केंद्रित है, तो आप एक और पर ध्यान केंद्रित नहीं कर सकते पहले आपके वर्तमान फोकस को धुंधला करने के बिना तत्व। जो कुछ भी आप करने का प्रयास कर रहे हैं, शायद एक बेहतर तरीका है।

घटनाक्रम के दर्शनीय लॉगिंग: http://jsfiddle.net/Zk8Fg/3/

+0

तो यह संभव नहीं है? शायद इसके लिए कोई कामकाज है? धन्यवाद – marknt15

+3

@ marknt15 मानक घटना अनुक्रम को विचलित करना संभव नहीं है, लेकिन इसका मतलब यह नहीं है कि आप जो करना चाहते हैं उसे हासिल करना असंभव है। हमें बताएं कि आप क्या हासिल करना चाहते हैं, हम मदद करने के लिए अपनी पूरी कोशिश करेंगे। – Sampson

6

खैर यह शायद मानक का हिस्सा है जो घटना आग पहले तो आप शायद आदेश को बदलने नहीं किया जाना चाहिए। हालांकि आप थोड़ी देर के साथ window.setTimeout का उपयोग करके परिणामस्वरूप कार्रवाई स्थगित कर सकते हैं।

$('#fname').focus().blur(function() { 
    window.setTimeout(function(){alert('fname onblur alert')},0.1); 
}); 

मैं हालांकि अन्य टिप्पणी से सहमत हैं, यह वास्तव में लगता है कि आप पर पुनर्विचार करना चाहिए कि आप इस बारे में जा रहे हैं क्योंकि डिफ़ॉल्ट की घटनाओं को पुन: क्रम शायद और अधिक सुरुचिपूर्ण समाधान है कि एक लंगड़ा हैक के रूप में मेरे से टकराई।

+0

धन्यवाद @ एसपीआईएफएफ। यह सबसे अच्छा जवाब है। :) –

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