6 回答
Disabled
输入不会在 FireFox 上触发change
和click
事件。
$('li:eq(1)').click(function(e){
if($.trim($('#input1').val()).length != 0){
$('#input2').prop('disabled', false);
}
});
而不是trim()
你可以使用$.trim()
跨浏览器的jQuery函数:
$('#input1').change(function(){
if($.trim($(this).val()).length != 0){
$('#input2').prop('disabled', false);
}
});
你的代码很好。问题是 .change() 在触发之前需要失去焦点(模糊)。尝试将其更改为 .keyup()
附加:这可能是你想要的效果
$('#input1').keyup(function(){
$('#input2').prop('disabled', $(this).val().trim().length == 0);
});
扩展拉米森的答案
如果你想切换残疾,#input2
你可以简单:
$('#input1').change(function(){
var isDisabled = !$.trim($(this).val()).length;
$('#input2').prop('disabled', isDisabled );
});
和演示:http: //jsfiddle.net/SVtDj/7/
The issue is Firefox needs you type 'enter' or do something else so input1 looses the focus after having wrote in input1 to cast the "onchange" event I think. Maybe this question is linked to yours, and it made me try the following that works with Firefox. (I didn't try it on other browsers)
$('#input1').bind('input',function(){
if($(this).val().trim().length != 0){
$('#input2').removeAttr('disabled');
}
});
请参阅@Andy E 在此帖子Jquery event on a disabled input中的答案,我认为这是解决您的问题的最佳解决方案。
那是因为在 FF 中,当一个输入被禁用时,它实际上是被禁用的(它不接收鼠标点击)。
单击禁用的元素不会在 input1 上产生模糊事件(焦点丢失),因此不会触发 onchange。
您可以使用一些类和 jQuery 轻松解决此问题。例如:
<input class=disabled id=input2>
一些CSS:
.disabled { background: #888; }
接着...
$(function(){
// disable keypresses on "disabled" input
$('.disabled').keypress(function(e){
e.preventDefault;
e.stopPropagation;
return false;
});
// doesn't allow to focus
$('.disabled').focus(function(e){
$(this).blur();
});
});
激活“禁用”元素:
$('#input2').removeClass('disabled');
在这里检查:http: //jsfiddle.net/SVtDj/11/