禁用输入上的 OnClick 事件

问题描述 投票:0回答:3
  • 我需要在已禁用的
    onclick
    标签上有一个
    <input>
    事件。
  • 这里
    onclick
    活动不起作用。
  • 还有其他方法可以使用
    onclick
    事件来基于 id 禁用输入吗?
  • 我尝试了下面的代码。
  • 第一个
    input
    工作了,但我需要与第二个工作相同,也与第一个工作相同。 (我只需要在
    Clicked
    上调用函数
    input
    )。

我的代码:

function Clicked(event)
{
  alert(event.id)
}
function ClickedDisabled(event)
{
  alert(event.ids)
}
<input type="text" id="ID" onclick="Clicked(this)" />
<input type="text" id="IDs" onclick="ClickedDisabled(this)" disabled />

javascript html dom-events
3个回答
5
投票

function Clicked(event) {
  alert(event.id)
}

function ClickedDisabled(event) {
  alert(event.id)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="text" id="ID" onclick="Clicked(this)" />
<span style="position:relative;">
<input type="text" id="IDs" disabled />
<div style="position:absolute; left:0; right:0; top:0; bottom:0; cursor: pointer;" id="IDs" onclick="ClickedDisabled(this)"></div>
  </span>

试试这个可能对你有帮助


2
投票

放置

input[disabled] {pointer-events:none}

在 CSS 中(它可以防止某些浏览器完全丢弃对禁用输入的点击),并捕获对父元素的点击。 恕我直言,这是一个比在元素上放置透明覆盖层来捕获点击更干净的解决方案,并且根据具体情况,也可能比使用 CSS 简单地“模拟”禁用状态容易得多(因为这不会阻止输入被已提交,并且还需要覆盖默认浏览器“禁用”样式)。

如果您有多个此类按钮,则每个按钮都需要一个唯一的父级,以便能够区分单击了哪个按钮,因为使用

pointer-events:none
,单击目标是按钮的父级而不是按钮本身。 (或者你可以测试点击坐标,我想......)。

如果您需要支持较旧的浏览器,请检查哪些浏览器支持

pointer-events
http://caniuse.com/#search=pointer-events


0
投票

может вам заменить 已禁用(只读)并单击 можно повесить 和 доступ к элементу ограничен

© www.soinside.com 2019 - 2024. All rights reserved.