【发布时间】:2017-04-19 12:30:32
【问题描述】:
当我尝试将 JavaScript/jQuery .hover 或 .click 函数绑定到 :disabled input 字段时,没有任何函数被触发。
请参阅下面的 sn-p。
$(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 时,将显示一条消息。
我知道我可以为此使用title="text"。然而,事实并非如此。我在右上角使用一个带有消息的小弹出窗口。消息存储在javascript object 中。
我的问题:
我该如何解决这个问题?还是不能将.hover() 或onmousemove 函数绑定到disabled input 字段?
【问题讨论】:
-
因为它被禁用。
-
好的,但是为什么呢?如果我想要一个
hover事件,我该怎么做? -
包裹在一个跨度或其他容器中并在跨度上使用悬停
-
一种解决方案是向包含输入的元素添加一个事件。
-
似乎您希望按钮看起来像已禁用但仍接受用户操作。如果是这种情况,那么您可以使用一个类来定义您想要的样式,而无需禁用用户操作
标签: javascript jquery html css