【发布时间】:2013-12-31 16:06:10
【问题描述】:
我有一个禁用按钮,当输入元素中有文本时应该启用该按钮。启用/禁用按钮的代码在输入的onblur 事件中。我的 HTML 由带有 id="in" 的 input、带有属性 disabled="disabled" 的 button 和带有 id="sp" 的 span 组成。
$(document).ready(function(){
var count = 0;
$("#in").bind("blur",function(){
alert("blur");
if($("#in").attr("value").length > 0){
$("button")[0].disabled = false;
} else {
$("button")[0].disabled = true;
}
});
$("#in").bind("focusout",function(){
alert("focusout");
if($("#in").attr("value").length > 0){
$("button")[0].disabled = false;
} else {
$("button")[0].disabled = true;
}
});
$("button").click(function(){
count++;
$("#sp").text(count);
});
});
在 IE 9 中,如果我在输入元素中键入文本并单击禁用的按钮,输入的 onblur 将触发,按钮变为启用状态,并且我得到按钮的单击事件。
但是,在 Chrome 中,当我在输入元素中输入文本并单击禁用按钮时,什么都没有发生。
我忽略的按钮是否有某些属性?我试图让focusout 开火,但我得到了相同的结果。我也使用 Firefox 得到相同的结果。 Chrome 似乎比 IE 更严格地对待disabled 属性,但这会给我们的用户带来问题。当我在禁用按钮上单击输入元素时,如何触发 onblur(或一些等效的)事件?
【问题讨论】:
-
我在答案中添加了一个示例。您可能想检查一下,看看它是否符合您的要求。