繁体   English   中英

如何在下拉列表中以相同的值触发jQuery更改事件

[英]How to trigger jQuery change event on dropdown with same value

即使用户选择相同的值,如何每次都触发jQuery更改事件? 我需要一个刷新的效果例如,如果用户选择律师 ,并警告hello然后再用户从下拉菜单中选择律师 ,它应该提醒hello 我怎样才能实现它? 以下是代码。

jQuery的

function filterPullDown () {
    alert('hello');
}
$(".businessTypePullDown").change(filterPullDown);

HTML

<select class="businessTypePullDown">
    <option value="" disabled selected>Business Type</option>
    <option value="1">General</option>
    <option value="2">Lawyer</option>
    <option value="3">Software Development</option>
    <option value="4">Auto-repair</option>
</select>

链接到小提琴

这应该工作。 它是标志和点击事件的组合。 单击选项时将始终触发它。

<select class="businessTypePullDown">
    <option value="" disabled selected>Business Type</option>
    <option value="1">General</option>
    <option value="2">Lawyer</option>
    <option value="3">Software Development</option>
    <option value="4">Auto-repair</option>
</select>
(function () {

  var filterPullDown = function() {
         alert('clicked');   
    }
    var flag = false;
    $(".businessTypePullDown").click(function () {
        if (flag) {
            filterPullDown()
        }
        flag = !flag;
    });

    $(".businessTypePullDown").focusout(function () {
        flag = false;
    });
}());

我想@MrUpsidown刚刚在不知情的情况下回答了这个问题! 为什么不在选项元素本身而不是外部select元素属性上添加事件处理程序。

回到超人的代码,使用:

$(".businessTypePullDown option").on("click", filterPullDown);

无论是否选择了相同的值,它都会调用'filterPullDown'函数。

使用

$(".businessTypePullDown>option:not(:disabled)").click(filterPullDown);

http://jsfiddle.net/68k31zct/14/

希望这有助于某人。

因此,一旦用户单击选择,以下代码将使禁用选项成为选择因此模仿用户正在更改其选择的状态,并且因为<select>上的.change()事件仅在选择选项时触发更改(不保持不变)并且用户无法选择已禁用的选项,这确保始终发生更改事件,然后您可以将回调附加到.change()事件。

$('select').on('click', function () {
   $(this).find('option').attr('selected', false);
   $(this).find('option:disabled').attr('selected', true);
   // replace options:disabled to options:first-child
   // if you don't want to pollute the select options. 
});

使用以下html:

<select title="Sort By">
   <option disabled>Sort By</option>
   <option selected>Name</option>
   <option>Date</option>
   <option>Price</option>
</select>

只是

function filterPullDown () {  
  console.log(this.selectedIndex);
}

$(".businessTypePullDown").on('click', filterPullDown);

http://jsbin.com/cunoxawemu/1/edit?js,console,output

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM