Javascript(jQuery)/HTML:设置一个<;输入>;或<;选择>;要启用,不工作?
我目前正在使用Mozilla Firefox 14.0.1和Google Chrome 20.0.1132.57(我认为是最新版本) 我的代码是这样的: 以下是我希望发生的事情:Javascript(jQuery)/HTML:设置一个<;输入>;或<;选择>;要启用,不工作?,javascript,jquery,html,Javascript,Jquery,Html,我目前正在使用Mozilla Firefox 14.0.1和Google Chrome 20.0.1132.57(我认为是最新版本) 我的代码是这样的: 以下是我希望发生的事情: 在input1中输入一些内容 单击禁用的输入(触发onchange函数…参见jQuery) 注意:在input1上输入内容后,我们单击禁用的输入,而不单击其他内容 现在应启用禁用的输入。因为通过单击禁用的输入,它应该触发input1的onchange函数 这在谷歌Chrome上是可行的,但在Mozilla Firefo
这在谷歌Chrome上是可行的,但在Mozilla Firefox上是不可行的。为什么单击禁用的元素不会触发输入的onchange函数?这也适用于单击禁用的而不是禁用的
禁用的
输入不会触发FireFox上的更改
和单击
事件
$('li:eq(1)').click(function(e){
if($.trim($('#input1').val()).length != 0){
$('#input2').prop('disabled', false);
}
});
您可以使用跨浏览器的jQuery$.trim()
函数代替trim()
:
$('#input1').change(function(){
if($.trim($(this).val()).length != 0){
$('#input2').prop('disabled', false);
}
});
禁用
输入不会触发FireFox上的更改和单击事件
$('li:eq(1)').click(function(e){
if($.trim($('#input1').val()).length != 0){
$('#input2').prop('disabled', false);
}
});
您可以使用跨浏览器的jQuery$.trim()
函数代替trim()
:
$('#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);
});
你的代码很好。问题是.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 );
});
还有演示:要扩展
如果您想在#input2
上切换残疾,您可以简单地执行以下操作:
$('#input1').change(function(){
var isDisabled = !$.trim($(this).val()).length;
$('#input2').prop('disabled', isDisabled );
});
演示:问题是Firefox需要您键入“enter”或执行其他操作,因此input1在编写input1以播放“onchange”事件后会失去焦点。也许是链接到你的,这让我尝试了以下与Firefox兼容的方法。(我没有在其他浏览器上尝试)
问题是Firefox需要您键入“enter”或执行其他操作,因此input1在编写了input1以引发“onchange”事件后会失去焦点。也许是链接到你的,这让我尝试了以下与Firefox兼容的方法。(我没有在其他浏览器上尝试)
这是因为在FF中,当一个输入被禁用时,它实际上被禁用(它不会收到鼠标点击)
单击禁用的元素不会在input1上产生模糊事件(焦点丢失),因此不会触发onchange
您可以使用一些类和jQuery轻松解决这个问题。例如:
<input class=disabled id=input2>
然后
$(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();
});
});
要激活“禁用”元素,请执行以下操作:
检查这里:这是因为在FF中,当输入被禁用时,它实际上被禁用(它不会收到鼠标点击)
单击禁用的元素不会在input1上产生模糊事件(焦点丢失),因此不会触发onchange
您可以使用一些类和jQuery轻松解决这个问题。例如:
<input class=disabled id=input2>
然后
$(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();
});
});
要激活“禁用”元素,请执行以下操作:
查看此处:在这篇文章中看到@Andy E的答案,我认为这是解决您问题的最佳解决方案。在这篇文章中看到@Andy E的答案,我认为这是解决您问题的最佳解决方案。这在Firefox中没有区别。不知道为什么这么快就升级了。@Musa是的,它不起作用,因为没有禁用输入的事件。这在Firefox中没有区别。不知道为什么这么快就升级了。@Musa是的,它不起作用,因为没有禁用输入的事件。在Firefox中单击禁用的输入元素不会改变焦点,因此不会触发事件。如果你按Enter或点击窗口中的空白,它仍然工作…点击Firefox中禁用的输入元素不会改变焦点,所以它不会触发事件。如果你按Enter或点击窗口中的空白,它仍然工作……在FF中不起作用。单击禁用的元素不会产生任何效果。在FF中不起作用。单击禁用的元素不会产生任何效果。