【问题标题】:Is there an HTML attribute/event handler for 'on mouse release'?是否有用于“鼠标释放”的 HTML 属性/事件处理程序?
【发布时间】:2014-04-07 14:10:08
【问题描述】:

我需要在释放滑块旋钮时调用一个函数。 onchange 在我更改值时更改它。有没有类似的解决方案

<input type="range" min="0" max="1000" onrelease="callfunction()">

【问题讨论】:

  • 这个例子有点奇怪,因为这样的元素允许用户在 0 和 1 之间选择。它应该有一个合适的step 属性,例如step="0.01"(或不同的 max 属性)。
  • 为简单起见,我只是更改了原始代码,问题也已经得到解答
  • 仅仅因为它已经被回答并不意味着它不应该被纠正。如果你想简化它并使元素有意义,你可以默认minmax
  • 首先它并没有错,我只是简化了原始项目的代码。最小值和最大值完全不相关,唯一相关的属性是“onrelease”,它不存在

标签: html attributes event-handling


【解决方案1】:

在桌面浏览器上使用mouseup 事件,在手机上使用touchend 事件来处理此用户交互。

<input type="range" min="0" max="1" 
       onmouseup="callfunction()" 
       ontouchend="callfunction()">

我建议查看caniuse.com 以获取浏览器支持。

已知问题(截至 2019-03-25):

【讨论】:

  • 这似乎是实用的解决方案。 input type=range 的事件处理在不同的浏览器中是不同的(并且仍然是实验性的)。只需移动滑块即可在 IE 中引发 change 事件,在 Firefox 中引发 input 事件,而这两者都在 Chrome 中!但是释放它会在所有这些中触发onmouseup。这可能不适用于在此上下文中不使用鼠标的实现。
  • @JukkaK.Korpela - 你是绝对正确的。这不起作用,例如用于触摸设备。
  • 但这也适用于触控设备吗?那里的等效事件是什么?
  • 这不包括使用键盘修改范围的用户(例如,出于可访问性原因不使用指点设备的用户)。
【解决方案2】:

tomhughes 提出了一个很好的观点:可访问性。

可以将onkeyup 添加到列表中:

<input type="range" min="0" max="1" 
   onmouseup="callfunction()" 
   ontouchend="callfunction()"
   onkeyup="callfunction()"
>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 2016-08-13
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多