【问题标题】:Call a function when a selected item is selected again再次选择所选项目时调用函数
【发布时间】:2019-12-23 20:20:28
【问题描述】:

我的网页中有一个下拉菜单。我已经使用x.change(y); 在所选项目更改时做一些事情。但是我想在用户选择相同的选定项目时调用一个函数。

这是我的 HTML 代码。

<select class="dropdown dateFilter" id="month" data-live-search="true" name="month">
  <option value="">Month</option>
  <option value="1">January</option>
  <option value="2">February</option>
  <option value="3">March</option>
  <option value="4">April</option>
  <option value="5">May</option>
  <option value="6">June</option>
  <option value="7">July</option>
  <option value="8">August</option>
  <option value="9">September</option>
  <option value="10">October</option>
  <option value="11">November</option>
  <option value="12">December</option>
</select>

及相关js:

$('#month').change(function () {
  //Do some things
});

【问题讨论】:

  • 您好,您的代码 &lt;option value="2")&gt;February&lt;/option&gt; 中的括号有误。这是您的实际代码还是您问题中的拼写错误?
  • 哦,谢谢您的评论。我会解决这个问题,但它不在我的运行代码中。
  • 不客气。我发现了这个stackoverflow.com/questions/15452103/…,也许这对你来说很有趣。
  • 没有真正的可能性,几乎所有解决方案都会在至少一个浏览器中失败。你能重构你的代码以消除这样做的需要吗?
  • @Nope 这对我的问题不起作用。

标签: javascript jquery jquery-selectbox


【解决方案1】:

我更喜欢使用 onclick。试试看,也许对你有帮助

document.querySelector("select.dropdown").onclick = (event)=>{
  if(event.clientX == 0 && event.clientY == 0){
    value = event.target.value;
    console.log("selected "+value)
  }
}
<select class="dropdown dateFilter" id="month" data-live-search="true" name="month">
  <option value="">Month</option>
  <option value="1">January</option>
  <option value="2">February</option>
  <option value="3">March</option>
  <option value="4">April</option>
  <option value="5">May</option>
  <option value="6">June</option>
  <option value="7">July</option>
  <option value="8">August</option>
  <option value="9">September</option>
  <option value="10">October</option>
  <option value="11">November</option>
  <option value="12">December</option>
</select>

【讨论】:

    【解决方案2】:

    您可以在选择option 时创建click 事件,并可以交叉检查单击的选项和选择的下拉值,如下所示:

    $(document).ready(function(){
        $('[name=month] option').click(function() { 
            if ($(this).attr('value') == $("#month").val()) {
                // user clicked on selected option
            } else {
                // user clicked on another option
            }
        });
    });
    

    您的 HTML 代码为:

    <select class="dropdown dateFilter" id="month" data-live-search="true" name="month">
      <option value="">Month</option>
      <option value="1">January</option>
      <option value="2">February</option>
      <option value="3">March</option>
      <option value="4">April</option>
      <option value="5">May</option>
      <option value="6">June</option>
      <option value="7">July</option>
      <option value="8">August</option>
      <option value="9">September</option>
      <option value="10">October</option>
      <option value="11">November</option>
      <option value="12">December</option>
    </select>
    

    希望对你有帮助。

    【讨论】:

    • 请添加评论以否决@unknown voter?
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2013-03-02
    • 2021-06-14
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多