如何在已选择的选项上触发onchange函数

时间:2017-03-30 15:43:20

标签: javascript jquery

我有一个下拉列表,我想在选择某些内容时触发一个功能。

<select id="myselect">
   <option>1</option>
   <option>2</option>
   <option>3</option>
</select>

$(document).on("change", "#myselect", function(event) {
alert("you selected something");
});

我遇到的问题是,如果我选择已经选择的选项,则不会触发该功能。我明白这是因为没有任何改变,但是有办法解决这个问题吗?

我试过了

  <select id="myselect" onmousedown="this.value='';" >

这对于几个选项来说还可以,但是当我需要向下滚动以选择时我有很多选项它会跳起并选择错误的选项。 任何帮助非常感谢。

2 个答案:

答案 0 :(得分:0)

尝试

 <select id="myselect" onclick="alert('Something selected')">
   <option>1</option>
   <option>2</option>
   <option>3</option>
</select>

答案 1 :(得分:-1)

<强>更新

&#13;
&#13;
function print(url) {
    console.log('print');
    var _this = this, iframeId = 'iframeprint', $iframe = $('iframe#iframeprint');
    if ($iframe.attr('src') != url) {
        $.when(
            $iframe.attr('src', 'about:blank'),
            $iframe.load(function () {
                console.log($iframe.prop('contentWindow').document.readyState);
            })
        ).done(function () {
            $iframe.attr('src', url);
            $iframe.load(function () {
                console.log('new');
                _this.callPrint(iframeId);
            });
        });
    } else {
        console.log('old');
        _this.callPrint(iframeId);
    }
}

// initiates print once content has been loaded into iframe
function callPrint(iframeId) {
    console.log('callPrint');
    $('div.wait').hide();
    var PDF = document.getElementById(iframeId);
    PDF.focus();
    PDF.contentWindow.print();
    return false;
}
&#13;
$(document).on("change", ".myselect",function(){
    var idSelect = $(this).attr("id"); /*get the id select change*/
    $(".myselect").each(function(){
       var idSelectOther = $(this).attr("id");/*get the id of another select*/
       if(idSelect != idSelectOther){ /*if id selected != other select then check value*/
          if($("#"+idSelect).val() == $("#"+idSelectOther).val()){ /* if val same so alert the user.*/
            alert("you already select this value");
          }
       }
    });
}); 
&#13;
&#13;
&#13;