【问题标题】:onclick event in select HTML not working in Safari选择 HTML 中的 onclick 事件在 Safari 中不起作用
【发布时间】:2009-11-20 09:37:27
【问题描述】:

我有一个带有 onclickonchange JavaScript 事件的 ASP.NET 下拉列表控件。 两者都适用于 IE、Mozilla、Opera 和 Chrome,但不适用于 Safari。当我删除 onclick 事件时,onchange 突然起作用了。

我使用onclick 的原因是为了在下拉列表更改之前获取它的值。有没有办法在不使用onclick 的情况下做到这一点?也就是说,在下拉列表更改/选择新值之前获取它的值?我只想在 JavaScript 中执行此操作。

【问题讨论】:

  • 我已将 onclick 事件替换为 onfocus。问题解决了。我猜 safari 不喜欢选择元素上的 onclick 事件
  • 抱歉打到了。对我来说,我发现我使用的是不支持的closest,并且在使用alert 调试后修复了它(在移动设备上没有console.log ;))..

标签: javascript safari dom-events


【解决方案1】:

有时您需要为 JavaScript 函数添加首选项为“javascript:”;例如:

<select onclick="changeDate()">

应该是

<select onclick="javascript:changeDate()">

【讨论】:

  • 帮助我确保javascript:() 都在那里。
  • @redolent 所以你不确定它没有工作,比你看起来,确定它开始工作了吗? :-D
  • 就是这么简单,是的
  • 哇...这对 10 年后的我有帮助...我不明白为什么 safari 必须像这样构建不同...
【解决方案2】:

onfocus 替换onclick 事件解决了这个问题。我猜 Safari 不喜欢 select 元素上的 onclick 事件。

【讨论】:

    【解决方案3】:

    对于我在 Chrome 中,onclick 与第二次单击选择框一起工作在 FF 和 IE 中,它在第一次单击时工作正常。

    【讨论】:

      【解决方案4】:

      &lt;select onclick="changeDate()"&gt;

      应该改为

      <select onchange="changeDate()">
      

      Safari 的反应似乎是一个打开事件,而不是一个关闭事件,就像在其他浏览器中一样。

      【讨论】: