2016-07-29 14 views
0

Ich habe eine Stunde damit verbracht, diese jsfiddle splendid selectize modification zu schließen (StopPropagation) auf Option Auswahl, aber ich fühle mich jetzt hilflos. Muss ich einige der selectize Option dafür verwenden? Ich habe die doc durchgelesen, aber nichts relevantes gefunden. Die einzige relevante Option scheint closeAfterSelect, aber der Standardwert ist falsch :( Irgendwelche IdeenStoppen Sie die Programmierung in selectize.js

$('.dropdown').each(function() { 
    $_self = $(this); 
    $_self.find('select') 
     .selectize({ plugins: ['component'], maxItems: 1, closeAfterSelect:false }) 
     .on('change', function() { 
      console.log('Changed value to:', $(this).val()) 
      $_self.find('span.value').text($(this).val()) 
      if ($(this).val()) { 
       $_self.removeClass('open'); 
      } 
     }); 
    $_self.find('select').on('click', function(e) { e.stopPropagation(); }); 
    $_self.find('.dropdown-menu').on('click', function(e) { e.stopPropagation(); }); 
    $_self.find('.dropdown').on('click', function(e) { e.stopPropagation(); }) 
}); 

Wieder einmal ist zu klären, -. Ich die Drop wollen nur nach unten zu schließen, wenn ich den Cursor drücken Wenn ich wählen Jede Option, ich möchte, dass sie offen bleibt. Wie Sie vielleicht bemerken, habe ich die stopPropagation-Methode für jede Klasse und jedes Element hinzugefügt und kann es dennoch nicht wie erwartet funktionieren

+0

Ein Proof of Concept in einem jsbin/jsfiddle viel helfen würde .... – MattDiMu

+0

@MattDiMu das ist, was seine glänzende selctize Link – Craicerjack

+0

es, dass es das Drop-Down das Problem das ist und nicht selectize – Craicerjack

Antwort

1

Das Problem ist, dass die e. stopPropagation() wird zu früh ausgeführt und wird daher nichts tun, aber Sie können return false das On-Change-Event:

http://jsfiddle.net/MattDiMu/ozmqek7b/1/

+0

Genau das, was ich wollte. Vielen Dank dafür –