2012-07-26 23 views
17

हम कैसे पता लगा सकते हैं कि किसी घटक पर एक परिवर्तन ईवेंट ट्रिगर किया गया था या नहीं चुनने का चयन किया गया था? हम केवल चयनित मूल्य का मूल्य या केवल अचयनित मूल्य को कैसे प्राप्त कर सकते हैं?.chosen.change() - यह पता लगाने के लिए कि क्या यह एक चुनिंदा या अचयनित कार्रवाई है

$("#airports-select-2").chosen().change(function(event) { 
    console.log('select2 change', event, $(event.target).val()); 
}); 

यह कोड मुझे उन सभी मानों को देता है जिन्हें अभी तक एक बहुविकल्पीय घटक पर चुना गया है? यह कैसे बदला जा सकता है केवल मुझे नए चुने गए या अचयनित घटक का मूल्य दें?

+1

चुना प्लगइन आप कॉलबैक में है कि जानकारी नहीं दे सकता, तो आप शायद एक सरणी में हर बार चयनित आइटम की सूची को बचाने के लिए और उसके बाद की तुलना करने और अद्यतन है कि सरणी 'परिवर्तन होगा 'कॉलबैक को – MrOBrian

उत्तर

3

हर घटना आग पर आप को गति प्रदान कर सकते हैं:

var target = $(event.target), 
    priorDataSet = target.data("chosen-values"), 
    currentDataSet = target.val(); 

//Diff and compare the delta here.  

target.data("chosen-values", currentDataSet); 

पहले डोम तत्व आप यह निर्धारित करने के लिए क्या डेल्टा मूल्य सेट के बीच है diff कर सकते हैं के लिए डेटा के अद्यतन करने के लिए। यदि यह पुराने में है और नए में नहीं है तो इसे हटा दिया गया है। यदि यह नए में है और पुराने में नहीं है तो इसे जोड़ा गया है।

यदि आपको दो सरणी के बीच डेल्टा निर्धारित करने के उदाहरण की आवश्यकता है तो मुझे बताएं और मैं इसके लिए एक उदाहरण भी चाबुक करूंगा।

36

चुना documentation से:

चुना मानक डोम घटना जब भी एक चयन किया जाता है चलाता है (यह भी भेजता है एक चयनित या का चयन रद्द पैरामीटर बताता है कि आप जो विकल्प था बदला हुआ)।

$('select').on('change', function(event, params) { 
    // can now use params.selected and params.deselected 
    }); 
+0

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

+0

आप