2017-01-13 32 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%确定所有浏览器都会在'关闭'之后模糊'