2017-01-13 31 views
0

我的情況如下:選擇元素的事件偵聽器沒有改變值

我有一個選擇框,有幾個選項。其中的一個選項,可以在頁面加載由後端預選:

<select name="select" class="js-choice-select"> 
    <option value="option-1">Option 1</option> 
    <option value="option-2" selected="selected">Option 2</option> 
    <option value="option-3">Option 3</option> 
    <option value="option-4">Option 4</option> 
    <option value="option-5">Option 5</option> 
</select> 

每當這個選擇元件改變值,需觸發一些JS代碼。所以,在這種情況下使用jQuery我添加以下代碼:

$(".js-choice-select").on("change", function() { 

    var selectedValue = $(this).val(); 

    doSomething(selectedValue); 

}); 

問題

現在,當用戶打開的選擇框,但不會選擇比已經選擇的選項任何其他值,默認的'change'事件監聽器不會觸發,但是我的doSomething函數需要被觸發。

有沒有人知道一個可行和直接的解決方案呢?

+1

您可以使用'.trigger('change')' – Satpal

+0

執行期望的操作默認值doSomething函數不需要在頁面加載時觸發,但在選擇框被使用的時刻改變或不)。 –

+0

整蠱,看看這個小提琴,可能會有所幫助:http://jsfiddle.net/4959gLxq/ –

回答

0

您可以在clickfocus和/或blur事件上觸發相同的一段代碼。只要您需要,這種方式doSomething()將被觸發。

+0

這會在用戶點擊選擇框時觸發該功能嗎?我喜歡在用戶關閉選擇框後執行該功能(例如在本機移動選擇上) –

+0

@KeesvanLierop在這種情況下,您可以使用「blur」事件。我並不是100%確定所有瀏覽器都會在'關閉'之後模糊'