【问题标题】:Trigger event on a select when the value is the same当值相同时触发选择事件
【发布时间】:2013-08-01 17:36:54
【问题描述】:

当用户更改选择菜单中的选择时,我触发了一个事件。正如您想象的那样,当用户选择一个与现有选项不同的选项时,它会起作用,但当它相同时,什么也不会发生。我尝试将其更改为单击事件,但似乎不起作用。

如果有人能解决这个问题,我们将不胜感激。

我已经找到了一些解决这个问题的方法,但它们似乎都不适合我。

如果这对你有影响,我也会使用骨干

我的活动如下所示:

'change .js-select'       : 'show_colours',

更新:

感谢您的反馈

我的场景是这样的。

我有四个选择菜单,其中 0、1 和 2 作为选项。如果用户选择除零以外的任何内容,则会在其下方显示一个颜色块块,以便用户单击一种颜色。这对于所有的选择菜单都是一样的。

现在由于空间不足,用户一次只能打开一个颜色块。因此,如果用户想要返回并更改封闭颜色块上的颜色,他们需要选择与现有选项不同的选项,因为如果他们选择相同的选项,打开颜色块的事件将不会触发。

我希望这很清楚。

【问题讨论】:

  • 为什么单击事件处理程序不起作用?你能发布你的处理程序代码吗?
  • JavaScript 与选择框交互的大部分方式是通过关联值引用每个
  • @abhitalks, iirc, onClick 不会为
  • @Swivelgames,是的。
  • @Swivelgames 您提供的链接不是“选择”,而是“选项”。但是,是的,我已经同意你关于正确使用的观点。 :) 请停火!

标签: javascript jquery


【解决方案1】:

你可以试试这样的:

var open = false;
$('select').on('mouseup', function () {
    if (open) alert(this.value);
    open = !open;
});

http://fiddle.jshell.net/6LYbu/1/

更新

由于这不适用于触摸设备,我们也应该监听change-事件:

var open = false;
$('select').on('mouseup change', function (e) {
    if (open || e.type === 'change') alert(this.value);
    open = !open;
});

【讨论】:

  • 感谢您的反馈,虽然这似乎在 Chrome 中不起作用,但它在 firefox 中起作用:s
  • 奇怪我也有 28.0.1500.95,我在 Mac os x 10.6.8 上
  • @DavidJones 哪个例子不起作用,第一个还是后一个?
  • +1 表示鼠标向上。 @DavidJones 它肯定可以在 Chrome 上运行。但是,Chrome 会稍微延迟触发该事件。如果您快速单击,则会错过它并触发单击。如果您按下按钮(mousedown)然后缓慢释放按钮(mouseup),它会正常工作。与 IE9 的行为相同。
  • 不,小提琴似乎仍然无法在 chrome 中工作,我现在在家(最初在工作中尝试过)在我的 mac book air 上运行 chrome 28.0.1500.95,但它在 Firefox 中工作
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多