【问题标题】:How to detect a Select change event if changing between two options with the same value?如果在具有相同值的两个选项之间进行更改,如何检测选择更改事件?
【发布时间】:2014-05-12 19:41:06
【问题描述】:
<select>
   <option value="">Select</option>
   <option value="10000">Minimum Coverage</option>
   <option value="25000">Average Coverage</option>
   <option value="">Other</option>
</select>

我必须让“选择”和“其他”都有空值,因为字段上的验证规则不允许空字符串或数值以外的任何内容。

底线,我需要能够检测用户何时处于“选择”并单击“其他”。有可能吗?

编辑:onChange 似乎没有触发。

【问题讨论】:

  • 你能做一个演示 onChange 没有触发吗?
  • 给其中一个赋值-1(或另一个超出您选择范围的值)并在您的onchange中检查它

标签: javascript events dom dom-events


【解决方案1】:

您可以检查selectedIndex 属性。如果您希望在每次项目更改时发生某些事情,请使用 onchange 事件绑定。

document.getElementsByTagName('select')[0].onchange = function() {
  var index = this.selectedIndex;
  var inputText = this.children[index].innerHTML.trim();
  console.log(inputText);
}

FIDDLE

【讨论】:

    【解决方案2】:

    change 事件肯定会触发,即使更改后的选项具有相同的值:

    jsfiddle.net/kyw2E

    change 事件处理程序中,您可以检查this.selectedIndex 属性以确定选择了哪个&lt;option&gt;。然后,您可以检查所选选项的 text 属性(如果有帮助):

    coverageSelector.onchange = function (e) {
        var selectedOption = this[this.selectedIndex];
        var selectedText = selectedOption.text;
    }
    

    【讨论】:

      【解决方案3】:

      较短的版本是:

       var mySelect = document.getElementById('#mySelect');
       mySelect.onchange = (event) => {
           var inputText = event.target.value;
           console.log(inputText);
       }
      

      【讨论】:

      • getElementById('mySelect');不要添加#
      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2023-03-09
      • 2011-12-06
      相关资源
      最近更新 更多