【问题标题】:How can we fire event on selected option when we select the selected option again当我们再次选择选定的选项时,我们如何在选定的选项上触发事件
【发布时间】:2017-07-19 00:26:00
【问题描述】:
  • 当我选择选项“2”时,它会第一次打开引导程序 - modal.so 它打开 modal.now 选项“2”已被选中。现在我再次点击 关于选项“2”。它不会触发任何更改事件,所以,我的引导程序 模态不打开。因为我在更改中编写了逻辑
    事件。
  • 那么,如何在选定选项上触发更改事件。

【问题讨论】:

  • 你能分享一下你已经做过的事情吗
  • 您可以使用“点击”事件,因为所选选项不会触发“更改”。
  • 当你选择“option 2”并将其更改为“option 2”时,根本没有任何变化,因此不会触发 change 事件

标签: javascript jquery twitter-bootstrap


【解决方案1】:

使用默认值选项创建一个选择。

<select id="slt">
    <option value="default">Select Something</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

每次处理一个非默认值选项的更改事件,然后将默认选项重置为选中。

var $slt = $('#slt'),
    defaultValue = 'default';

function handleChange(e){
    var val = $slt.val();

    // do nothing for defaultValue being selected
    if (val === defaultValue) {
        return;
    }

    // do something else
    console.log(val);

    // reset the value to defaultValue
    $slt.find('option:selected').prop('selected', false);
    $lst.find('option').eq(0).prop('selected', true);
}

$slt.bind('change', handleChange);

但这会使选择始终显示为“Select Something”。

这是一个演示:http://codepen.io/shuizhongyueming/pen/JWYYLJ


我找到了另一个解决方案,比我的更好。

https://stackoverflow.com/a/12404521/2279763

它使用selectedIndex将选中的值重置为焦点,不需要defaultValue选项,点击后会显示选中的选项。

这是评论中的演示:http://fiddle.jshell.net/ecmanaut/335XK/

【讨论】:

    【解决方案2】:

    尽管change 事件触发了click 事件select option 上的模态,就像

    $('select option').on('click',function(){
          $("#modelId").modal('show');
    });
    

    【讨论】:

    【解决方案3】:

    你也可以使用模态函数

    $('select option').on('click'function(){
        $('modelId').modal('show');
    });
    

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2019-07-19
      • 2014-06-10
      • 2019-04-26
      相关资源
      最近更新 更多