2013-02-27 134 views
7

मैं AJAX के साथ Select2 का उपयोग कर रहा हूँ। सबकुछ ठीक काम करता है, जब उपयोगकर्ता अपनी इच्छित वस्तु पर क्लिक करता है, तो मैं कुछ सामान करने के लिए प्रलेखन द्वारा निर्दिष्ट (परिवर्तन) फ़ंक्शन का उपयोग करता हूं।Jquery Select2, AJAX डेटा को (चेंज) फ़ंक्शन पर कैसे एक्सेस करें?

$("#e6").on("change", function(e) {   
     $('input#Destination').val(e.val); 
      }); 

}); 

वापसी मान (e.val) data.id ajax कॉल से मूल्य है, लेकिन मेरे डेटा वस्तु है "नाम", "आईडी" और "प्रकार" ।

मैं डेटाफॉर्मैट चयन() में कोड जोड़ सकता हूं लेकिन यह तर्क नहीं लगता है और भ्रमित है।

 function dataFormatSelection(data) { 
    console.log(data.name + "|" data.id + "|" + data.type); 
    return data.name; 
} 

कैसे मैं पूरी डेटा पर ("बदलाव" पर वस्तु (के बजाय सिर्फ data.id) का उपयोग कर सकते .. घटना?

उत्तर

18
$("#e6").on('change', function(e) { 
    // Access to full data 
    console.log($(this).select2('data')); 
}); 
+3

क्या आप समझा सकते हैं कि यह क्यों काम करता है? – ford

+0

वाह, यह काम करता है ... धन्यवाद! –

2

Select2 docs परिवर्तन घटना के अनुसार 3 होनी चाहिए गुण:

  • वैल: वर्तमान चयन (खाते में परिवर्तन के कारण हुई लेने) - आईडी या आईडी
  • 0 की सरणी घटना वस्तु निम्नलिखित कस्टम गुण शामिल
  • कहा: जोड़ा तत्व, यदि कोई हो - पूर्ण तत्व वस्तु, न सिर्फ आईडी
  • हटाया: हटा दिया तत्व, यदि कोई हो - पूर्ण तत्व वस्तु, न सिर्फ आईडी

भी है उदाहरण:

$("#e11").select2({ 
    placeholder: "Select value ...", 
    allowClear: true, 
    data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}] 
}); 

$("#e11_2").select2({ 
    placeholder: "Select value ...", 
    multiple: true, 
    data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}] 
}); 

$("#e11").on("change", function(e) { 
    console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed})); 
}).on("open", function() { 
    console.log("open"); 
}); 

$("#e11_2").on("change", function(e) { 
    console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed})); 
}).on("open", function() { 
    console.log("open"); 
}); 

लेकिन मैंने देखा है कि added और removed गुण केवल मौजूद हैं जब multiple: true पर है। मुझे नहीं पता कि यह डिज़ाइन द्वारा है या यह बग है। मैं वैसे भी इसकी रिपोर्ट करने जा रहा हूं, क्योंकि परिवर्तन पर उपलब्ध चयनित तत्व निश्चित रूप से कुछ आवश्यक है।

0

मैं संदेह है ... मैं कंसोल लॉग में दिखा मूल्यों कैसे लेगी और उसका उपयोग कर सकते हैं?

यह सही है यदि मैं इन मानों को लेता हूं और प्रत्येक को एक var में डाल देता हूं? क्योंकि अगर मैं किसी भी var बनाया के लिए console.log (var) का उपयोग करता हूं तो मान प्रदर्शित होता है लेकिन अगर कोई अलर्ट (var) चेतावनी कभी नहीं दिखाया जाता है।

मुझे AJAX एक PHP फ़ंक्शन के साथ कॉल करने के लिए चुने गए विकल्प का मान लेने की आवश्यकता है।

$("#e11").on('change', function(e) { 
    //I create a var data and works it like an Array 
    var data = $(this).select2('data'); 
    //Then I take the values like if I work with an array 
    var value = data.id; 
    var text = data.text; 
    //If I use console.log(var) the values are displayed but not with an alert 
} 

धन्यवाद !!!

+0

मुझे लगता है कि आपको एक नया प्रश्न बनाना चाहिए, यह एक अलग मुद्दा है –

+0

हां, मुझे खेद है, आपके पास कारण है ... वह कोड ठीक काम करता है! – PX10

+0

'$ (यह)। चयन 2 ('डेटा') 'एक सरणी लौटाएगा, इसलिए आपको इसे डेटा [इंडेक्स] .id' तक एक्सेस करना चाहिए। – Dementic

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

  • कोई संबंधित समस्या नहीं^_^