2011-06-20 22 views
14

http://jqueryui.com/demos/autocomplete/#event-changejQuery यूआई स्वत: पूर्ण: पहले 'आग' घटना को कैसे आग लगाना है?

ऐसा लगता है change घटना की तरह आप एक आइटम का चयन करने के बाद गोली चलानी है, लेकिन बजाय यह onBlur आग लगती है, लेकिन इनपुट बदल गया है केवल यदि।

select ओटीओएच बहुत जल्दी आग लगती है, इनपुट इनपुट अपडेट होने से पहले यह आग लगती है।

मैं इनपुट के साथ कुछ करना चाहता हूं जैसे ही उपयोगकर्ता कोई आइटम चुनता है या उपयोगकर्ता के बाद कुछ टाइप करता है और फोकस स्विच करता है (सामान्य परिवर्तन ईवेंट की तरह)।

मैं यह कैसे कर सकता हूं?

+0

दस्तावेज़ीकरण बताता है कि नए चुने गए मान को ui.item द्वारा संदर्भित किया जाता है। क्या आप इस तरह का मूल्य प्राप्त कर सकते हैं? परिवर्तन वस्तु हमेशा बंद घटना के बाद भी आग लगती है जिसे आपने ऑनब्लर घटना तक फायरिंग के बारे में बताया है। – Ben

+0

@ बेन: निकटतम घटना ऑनब्लूर से पहले निकाल दी जाती है। हां, मैं 'ui.item' का लाभ उठा सकता हूं लेकिन फिर मुझे उन 2 मामलों का इलाज करना होगा जहां उपयोगकर्ता परिवर्तन के कारण कुछ टाइप करता है, और जहां उपयोगकर्ता कोई आइटम चुनता है, अलग-अलग (डेटा को अलग-अलग एक्सेस करना होता है) । जब तक हम धोखा नहीं देते ... जैसे मैंने किया। लेकिन अब जब आप इसका जिक्र करते हैं, तो डेटा बंद * घटना से पहले * अपडेट हो जाता है, इसलिए मैं वहां परिवर्तन को भी ट्रिगर कर सकता हूं। – mpen

+0

यह मजाकिया है कि "जब सूची छिपी हुई है - बदलाव के साथ एक साथ नहीं होना चाहिए।" क्योंकि वे 2 घटनाएं एक ही समय में आग नहीं लगती हैं, भले ही वे दोनों होते हैं। – mpen

उत्तर

20

कभी नहीं, इसे समझ लिया। हम धोखा कर सकते हैं:

select: function(event,ui) { 
    this.value=ui.item.value; 
    $(this).trigger('change'); 
    return false; 
} 

परिवर्तन घटना मैन्युअल मैन्युअल रूप से इनपुट के मूल्य, तो ट्रिगर सेट करें, और अवास्तविक लौटाते जिससे कि यह इनपुट दो बार की स्थापना परेशान नहीं करता है।

+0

बहुत बढ़िया विचार – iMatoria

+0

आपने मुझे एक तंत्रिका टूटने से बचा लिया है! धन्यवाद! –

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