2017-12-19 96 views
5

मैं 4 विकल्पों में कोड के साथ एक select2 लटकती है:Select2 ड्रापडाउन एकाधिक चयन और चयन रद्द

<select id="ddlInqOn" class="InqSelect2 form-control"> 
    <option value="1">--All--</option> 
    <option value="2">Today Date</option> 
    <option value="3">Past Date</option> 
    <option value="4">Feature Date</option> 
</select> 

select2 इस javascript से बुलाया:

$('.InqSelect2').select2({ 
    dropdownAutoWidth: 'true', 
    multiple: true 
}); 

मैं की तरह जब मैं सभी विकल्प क्लिक हासिल करना चाहते हैं फिर अन्य विकल्प हटाएं और यदि अन्य विकल्प चुना गया है तो चयन से सभी विकल्प हटा दें।

मैं इस कोड की कोशिश की है:

$('body').on('change', '#ddlInqOn', function() { 
    debugger; 
    // 
}); 

लेकिन परिवर्तन घटना Select2 लटकती के परिवर्तन घटना को ट्रैक करने के किसी भी अन्य संभावना triggred नहीं है?

उत्तर

1

उत्तर @Nimeksha द्वारा दिए गए द्वारा दिए गए jsfiddle में पूरी तरह से काम करता है @ Nimeshka लेकिन मेरे कोड में मैं नहीं कर सकते लटकती में परिवर्तन की ट्रिगर घटना हो और खोज करने के बाद मैं समाधान नहीं मिला here से। कोड यहाँ है:

$(document).on('change', '.InqSelect2', function() { 
     debugger; 
     if (e.params.data.id == 1) { 
      $(this).val(1).trigger('change'); 
     } else { 
      values = $(this).val(); 
      var index = values.indexOf('1'); 

      if (index > -1) { 
       values.splice(index, 1); 
       $(this).val(values).trigger('change'); 
      } 
     } 
    }); 

मैं भी कोशिश की है:

$('body').on('change', '.InqSelect2', function() { 
     debugger; 
     if (e.params.data.id == 1) { 
      $(this).val(1).trigger('change'); 
     } else { 
      values = $(this).val(); 
      var index = values.indexOf('1'); 

      if (index > -1) { 
       values.splice(index, 1); 
       $(this).val(values).trigger('change'); 
      } 
     } 
    }); 

लेकिन यह काम नहीं करता। id #ddlInqOn द्वारा भी काम नहीं करता है।

$(document).on('change', '.InqSelect2', function() {}); के साथ काम किए गए कोड के ऊपर क्यों काम नहीं किया, लेकिन यह मेरे लिए काम करता है।

धन्यवाद फिर से @Nimeshka

3

Select2 jQuery ईवेंट सिस्टम का उपयोग करता है। तो आप JQuery on विधि का उपयोग कर चयन 2 ईवेंट से संलग्न कर सकते हैं।

फिर आप चयन तत्व का मान सेट कर सकते हैं और चयन बॉक्स को अपडेट करने के लिए change ईवेंट ट्रिगर कर सकते हैं।

आप जो भी कर रहे हैं वह आप कर सकते हैं।

$('.InqSelect2').on('select2:select', function (e) { 

    if (e.params.data.id == 1){ 
     $(this).val(1).trigger('change'); 
    }else{ 
     values = $(this).val(); 
     var index = values.indexOf('1'); 

     if (index > -1) { 
      values.splice(index, 1); 
      $(this).val(values).trigger('change'); 
     } 
    } 
}); 

ध्यान दें कि मैंने - 1 - के विकल्प के रूप में '1' का उपयोग किया है। अगर आपको यह स्पष्ट नहीं है तो मुझे कुछ पूछने के लिए स्वतंत्र महसूस करें।

https://jsfiddle.net/c6yrLoow/

आशा है कि यह मदद करता है :)

+0

इस समारोह –

+0

नहीं कहा जाता हो जाता है कि आप क्या मिलता है? कोई त्रुटि? और आप चयन 2 का संस्करण क्या उपयोग करते हैं? –

+0

कोई त्रुटि सिर्फ फ़ंक्शन कहला नहीं सकती है या ईवेंट को कॉल नहीं कर सकता है और चयन 2 4.0.3 –

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