在select选项中调用该函数

时间:2017-05-03 05:40:35

标签: javascript jquery html events

我有两个选项的选择框我需要在onchange中触发该函数以及需要调用所选选项的函数。如果我选​​择option1作为默认选项它会触发该函数但是如果我再次选择相同的选项1它没有任何意义。即使我再次选择了option1,我想调用该函数。



function hello() {
    alert('hello');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
  <select onchange="hello()">
    <option  onclick="hello() value="1">Week 1</option>
    <option  value="2">Week 2</option>
  </select>
</div>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

试试这个(详情如下):

function hello() {
    alert('hello');
}
<div>
  <select onclick="hello()">
    <option value="1">Week 1</option>
    <option value="2">Week 2</option>
  </select>
</div>

Working Fiddle

此处使用的不是onchange onclick,因此无论选择是否更改,函数都会调用每次点击。

但使用onclick是一种不好的做法,因为它增加了一些开销。

答案 1 :(得分:1)

您应绑定mouseup元素的select事件处理程序。

  

当鼠标指针结束时,mouseup事件被发送到一个元素   元素和鼠标按钮被释放。

$("select").mouseup(function() {
    var open = $(this).data("isopen");
    if(open) {
        alert('hello');
    }
    $(this).data("isopen", !open);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
  <select>
    <option value="1">Week 1</option>
    <option  value="2">Week 2</option>
  </select>
</div>

答案 2 :(得分:0)

使用onclickonchange是不好的做法。我建议使用以下内容来检测值的变化。此外,当您点击hello()时,您编写的代码不会触发第二个Week 1

$("#select").change(function () {
  if ($(this).val() == 1) {
    console.log("you pressed one");
  }
  console.log("you changed the value");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
  <select id="select">
    <option value="1">Week 1</option>
    <option value="2">Week 2</option>
  </select>
</div>

答案 3 :(得分:0)

<div>
  <select onmouseup="hello(this)">
    <option value="1">Week 1</option>
    <option value="2">Week 2</option>
  </select>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
    function hello(e){
        var open = $(e).data("isopen");
        if(open)
            alert('hello' + $(e).val());

        $(e).data("isopen", !open);
    }
</script>