2012-11-06 89 views
4

我有這個dropdown,我想警告/記錄的東西,當它的值被改變。發生什麼事是當我用鼠標點擊dropdown,並選擇任何其他值,更改事件被觸發。但是當焦點位於dropdown,並且我按updown箭頭時,它將更改下拉列表中的值,但事件未被觸發,並且警報現在顯示。 下面的代碼jQuery的更改事件不從鍵盤觸發?

<select id="drpDay" name="drpDay" style="background-color: white;"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7" selected="selected">7</option>  
    </select> 
</br> 
<select id="drpMonth" name="drpMonth" style="background-color: white;"> 
     <option value="Jan">Jan</option> 
     <option value="Feb">Feb</option> 
     <option value="Mar">Mar</option> 
     <option value="Apr">Apr</option> 
     <option value="May">May</option> 
     <option value="Jun">Jun</option> 
     <option value="Jul">Jul</option> 
     <option value="Aug">Aug</option> 
     <option value="Sep">Sep</option> 
     <option value="Oct">Oct</option> 
     <option value="Nov" selected="selected">Nov</option> 
     <option value="Dec">Dec</option>  
    </select> 
</br> 
<label id="lbl" text="" width="auto">adsf</label> 

JS的是

$('#drpDay, #drpMonth').change(function(event) { 
    alert(event.which); 
    $('#lbl').text('change ' + event.which + ' and ' + $(event.target).attr('id')); 
}); 

這裏的小提琴http://jsfiddle.net/2NBPx/4/

我要的是當選擇框的值發生變化,事件按up和/或down箭頭,我希望這個事件被解僱。爲什麼不開火,我怎麼讓它從鍵盤變成火呢?

+0

你的意思是,當名單下來,你可以按上下方向鍵突出顯示要選擇的項目。如果是這樣,那麼只有當您通過點擊鼠標或按下輸入值來更改值時,值纔會改變。 – Musa

回答

7

將其綁定到KEYUP和改變,像這樣:http://jsfiddle.net/2NBPx/6/

$('#drpDate, #drpMonth').on('change keyup',function(event) { 
    if($(this).data('last') !== $(this).val()){ 
     $(this).data('last', $(this).val());    
     $('#lbl').text('For change ' + event.which + ' and you ' + $(event.target).attr('id')); 
    } 
}); 

UPDATE:當實際情況發生變化只解僱。

0

您可以合併changekeyup事件。如果當值實際上已經改變,那麼您的事件處理程序應該只能做他的工作,你將不得不增加一些邏輯到它(記得舊值,比較法,...)

$('#drpDay, #drpMonth').on("change keyup", function(event) { 
    //... 
}); 
+1

對於jQuery的'on'事件是用逗號隔開的空格。 http://api.jquery.com/on/ –

+0

@AdamMerrifield謝謝 – Andreas

+0

但即使沒有變化,這種情況不會發生嗎?即當用戶在焦點位於'