2013-05-08 9 views
9

Bir açılırdım, ancak bir kullanıcı başka bir değer seçtiğinde, bazı kodların yürütülmesini istiyorum. Soruma: açılır listenin seçili değerinin değişip değişmediğini nasıl kontrol edebilirim? Benim javascript dosyasındaMeteor - select'i değiştir seçeneğine tıklayın.

<template name="jaren">  
    <form id="yearFilter"> 
     <select class="selectpicker span2" id="yearpicker" > 
      {{#each jaren}} 
       {{#if selectedYear}} 
       <option selected value="{{_id}}">{{jaar}} {{description}}</option> 
       {{else}} 
       <option value="{{_id}}">{{jaar}} {{description}}</option> 
       {{/if}} 
      {{/each}} 
     </select> 
    </form> 
</template> 

:

Template.jaren.jaren = function() { 
    return Years.find(); 
} 
Template.jaren.selectedYear = function() { 
    if (Session.get('year_id') == this._id) { 
    return true; 
    } else { 
    return false; 
    } 
} 
Template.jaren.events({ 
    'change form#yearFilter #yearpicker': function(event, template) { 
    Session.set('year_id', template.find('#yearpicker').value); 
    console.log("value changed"); 
    } 
}); 

cevap

20

Olay işleyicisi içinde seçme öğesinin değerini almak ve ardından eski değerine size karşılaştırabilirsiniz benim html dosyasında

zaten sakladığı:

"change #yearpicker": function(evt) { 
    var newValue = $(evt.target).val(); 
    var oldValue = Session.get("year_id"); 
    if (newValue != oldValue) { 
    // value changed, let's do something 
    } 
    Session.set("year_id", newValue); 
} 
+0

İlk sorun, Bootstrap selectpicker (https://github.com/silviomoreto/bootstrap-select) olay işleyicisini kırmasıydı, böylece meteor, verilerin değiştirildiğini asla bilmez. –

+2

Yalnızca jQuery kullanmadan '' console.log (e.target.value); –

+1

'console.log (e.target.value);' çalışmaz, çünkü seçmenin değeri yoktur. Çocuk olarak seçenekler seçti ve değerleri var. CurrentTarget.options [currentTarget.selectedIndex] .value' kullanmanız gerekir. –

2

saf JavaScript bir çözüm olacaktır: