ng-click不能处理子输入标记(mozilla firefox)

时间:2018-02-21 11:23:44

标签: javascript jquery html css mozilla

<div ng-click="hello()">
    <input type="password" disabled>
</div>

我有上面的HTML脚本。

父div具有单击功能。当我在firefox中单击子输入标记时,父级的单击事件不起作用,但在chrome中它工作正常。从输入标记中删除禁用将使其在mozilla上正常工作,但是我需要禁用此输入标记。

如何在不消除输入标记禁用的情况下使其在Firefox上运行

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但因为我只是失去了一个小时的大部分时间在同一个问题上我的角8项目时,我想我反正发布为我工作的答案。

首先,这不是 Angular 的问题,而是 Firefox 的问题。似乎 Firefox 根本不会从禁用的输入字段中触发点击事件。因此,单击输入时,没有事件要传播到父级。查看此线程以获取更多信息:Event on a disabled input。顺便说一句,我在对已接受答案的评论中找到了这个解决方案,因此归功于 Doin

因此,解决此行为的最简单方法是将以下 css 样式添加到 input 元素:

pointer-events: none;

这可以防止元素对指针事件做出反应,这意味着指针事件也不会被禁用的输入“吸收”,而是从父元素触发。

请参阅下面的完整示例:

function hello() {
  document.getElementById('demo').innerHTML = 'Hi there!';
}
div {
  background-color: aqua;
  cursor: pointer;
}

div input:disabled {
  pointer-events: none;
}
<div onClick="hello()">
    <input type="password" disabled>
</div>

<span id="demo"></span>

答案 1 :(得分:0)

您是否尝试使用 readonly 而不是禁用

<div ng-click="hello()">
<input type="password" readonly>
</div>