为什么我们不能将函数绑定到 :disabled 输入字段?

红色的

当我尝试将JavaScript/jQuery .hover.click函数绑定到一个:disabled input字段时,没有一个函数被触发。

请参阅下面的片段。

$(document).ready(function() {
  var button_1 = $("#button_1");
  
  button_1.hover( function() {
    console.log("Hover event button 1");
  });
  button_1.click( function() {
    console.log("Click event button 1");
  });
});

function button_2_click() {
  console.log("Click even button 3");
}
function button_2_hover() {
  console.log("Hover even button 3");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Hover over one of the buttons, and you'll see none of the console messages gets logged. When removing the `disabled` property, all events are fired.</p>
<button id="button_1" disabled>Disabled 1</button>
<button id="button_2" onmouseover="button_2_hover();" onclick="button_2_click();" disabled>Disabled 2</button>

MDN 对该disabled属性的说明如下

指示元素是否被禁用。如果此属性设置为 true,则该元素将被禁用。禁用的元素通常用灰色文本绘制。如果该元素被禁用,则它不会响应用户操作,无法聚焦,并且不会触发命令事件。

我试图存档的是,当用户:hover超过 时button:disabled,会显示一条消息。

我知道我可以使用 a title="text"然而,事实并非如此。我在右上角使用一个带有消息的小弹出窗口。该消息存储在一个javascript object.

我的问题:
我该如何解决这个问题?或者只是无法绑定.hover()onmousemove运行这些disabled input字段?

TJ克劳德

click部分符合规格

禁用的表单控件必须防止click在用户交互任务源上排队的任何事件在元素上分派。

您正在测试的用户代理似乎更进一步,并且还阻止了与悬停相关的事件(例如,Chrome 和 IE 似乎可以)。其他用户代理可能不会(例如,Firefox 允许与悬停相关的事件。)

如果您想要这些事件,您可以让按钮保持启用状态,然后将它们设置为禁用的样式,并防止单击它们执行其他操作,尽管这可能会导致用户体验混乱。

或者,你可以把一个span 内部button,并且勾上的事件:

$(document).ready(function() {
  var button_1 = $("#button_1 span");
  
  button_1.hover( function() {
    console.log("Hover event button 1");
  });
  button_1.click( function() {
    console.log("Click event button 1");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Hover over one of the buttons, and you'll see none of the console messages gets logged. When removing the `disabled` property, all events are fired.</p>
<button id="button_1" disabled><span>Disabled 1</span></button>

按钮的某些部分不会触发事件(环绕声的位),尽管您可以使用 CSS 修复它...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从输入提交字段中删除 disabled = "disabled" 属性?

为什么我们不能在C#中使用公共字段进行数据绑定?

为什么我不能删除输入字段中的字符

为什么我不能使用javascript清除输入字段?

.attr('disabled,'disabled')或.attr('disabled',true)用于禁用输入

为什么我们不能在TypeScript类中定义const字段,为什么静态readonly不起作用?

为什么我们在复制函数中限制对 Ord 的输入?

为什么我们需要stdin作为输入函数的文件版本?

为什么不能在输入字段中选择并输入数据?

当我们向输入字段提供输入时,为什么PhantomJS仅输入最后一个字母?

为什么我们需要重塑LSTM的输入?

为什么我们不能在角度6的同一输入标签中使用[[ngModel)]和值

为什么我不能在输入文本字段中输入?

为什么通过jQuery更改“ disabled”字段后,cakePHP在Blackhole上使用黑洞?

文件输入到特定字段

循环到输入数组字段并使用jquery更改输入字段

将日期绑定到输入字段

角度绑定到文件输入字段的选择?

我的输入字段左侧的标签

为什么我们要创建一个单独的函数来检测其他类的输入

输入到输入字段的文本被复制到另一个输入字段的值的状态 - 为什么?

为什么只读输入字段无效

textAngular输入字段显示?为什么?

为什么输入字段的值返回undefined

谁能解释为什么我们在angular6形式的同一输入字段中都需要ngModel和#nameField =“ ngModel”?

为什么 Thymeleaf 无法将表单输入绑定到对象字段?

React 不能将日期时间本地输入字段设为空

为什么我不能在HTML5数字字段中输入500?

为什么用角使我的输入字段为空?