Javascript 仅当文本字段包含文本时启用按钮
我有一个文本字段和一个默认禁用的按钮。如果用户在文本字段中键入内容,然后离开该字段,则该按钮应处于启用状态 为什么我的代码不能按预期工作?这是一本书 HTMLJavascript 仅当文本字段包含文本时启用按钮,javascript,jquery,html,Javascript,Jquery,Html,我有一个文本字段和一个默认禁用的按钮。如果用户在文本字段中键入内容,然后离开该字段,则该按钮应处于启用状态 为什么我的代码不能按预期工作?这是一本书 HTML 我建议使用blur而不是keyup,因为您说过“一旦离开该字段” js $('#txtInput').on("blur", function(){ if($(this).val().length > 0 ){ $(this).next(".buttEnable").attr("disabled",false)
我建议使用
blur
而不是keyup
,因为您说过“一旦离开该字段”
js
$('#txtInput').on("blur", function(){
if($(this).val().length > 0 ){
$(this).next(".buttEnable").attr("disabled",false);
}
else{
$(this).next(".buttEnable").attr("disabled","disabled");
}
});
我建议使用
blur
而不是keyup
因为你说的是“一旦离开现场”
js
$('#txtInput').on("blur", function(){
if($(this).val().length > 0 ){
$(this).next(".buttEnable").attr("disabled",false);
}
else{
$(this).next(".buttEnable").attr("disabled","disabled");
}
});
原始代码有几个错误:
中缺少一个(this).val()
$
- 在
条件后有一个额外的分号if
和true
不应被引用false
分支中的else
拼写错误disable
change
而不是keyup
下面是一个重写版本,它修复了错误,并消除了一些重复代码:
$('#txtInput').change(
function()
{
var isEmpty = !$(this).val();
$('.buttEnable').prop('disabled', isEmpty);
});
更新:如果您还想在按钮启用时添加CSS类,可以调用toggleClass
:
$('.buttEnable').prop('disabled', isEmpty)
.toggleClass('buttBlue', !isEmpty);
原始代码有几个错误:
中缺少一个(this).val()
$
- 在
条件后有一个额外的分号if
和true
不应被引用false
分支中的else
拼写错误disable
change
而不是keyup
下面是一个重写版本,它修复了错误,并消除了一些重复代码:
$('#txtInput').change(
function()
{
var isEmpty = !$(this).val();
$('.buttEnable').prop('disabled', isEmpty);
});
更新:如果您还想在按钮启用时添加CSS类,可以调用toggleClass
:
$('.buttEnable').prop('disabled', isEmpty)
.toggleClass('buttBlue', !isEmpty);
你的代码有很多问题。例如,考虑分号后的if,使用“禁用”在其他条件下。你的代码有很多问题。例如,考虑分号后的if,使用“禁用”在其他条件下。非常感谢!是的,
blur
适用于这种情况。这是有效的。请注意:jQuery团队在设置禁用时使用prop
而不是attr
,尽管这两种方法都有效。谢谢您的评论@MichaelLiu。我不知道;)按钮启用后,我想更改其背景色。在else语句中,我添加了$('button').addClass('buttBlue')代码>(示例在这里)。不知怎的,按钮的背景色没有变成蓝色?请帮忙!你有一些错误。检查此更新的小提琴。另外,addClass
应该在第一个if语句中。当按钮再次禁用时,您还必须使用removeClass
。)非常感谢你!是的,blur
适用于这种情况。这是有效的。请注意:jQuery团队在设置禁用时使用prop
而不是attr
,尽管这两种方法都有效。谢谢您的评论@MichaelLiu。我不知道;)按钮启用后,我想更改其背景色。在else语句中,我添加了$('button').addClass('buttBlue')代码>(示例在这里)。不知怎的,按钮的背景色没有变成蓝色?请帮忙!你有一些错误。检查此更新的小提琴。另外,addClass
应该在第一个if语句中。当按钮再次禁用时,您还必须使用removeClass
。)非常感谢您指出这些错误!在这些错误被纠正之后,它就可以工作了。另外,请解释的作用$代码>在这种情况下是什么意思?谢谢你$代码>可能看起来很混乱<代码>
是布尔NOT运算符,由于运算符的优先级,它实际上应用于整个表达式$(this).val()
。换句话说,如果您添加多余的括号,它相当于!($(this.val())
。对于字符串,!s
相当于s!=''代码>。所以$(this.val()
是$(this.val()!=''的缩写代码>。非常感谢您指出这些错误!在这些错误被纠正之后,它就可以工作了。另外,请解释的作用$代码>在这种情况下是什么意思?谢谢你$代码>可能看起来很混乱<代码>
是布尔NOT运算符,由于运算符的优先级,它实际上应用于整个表达式$(this).val()
。换句话说,如果您添加多余的括号,它相当于!($(this.val())
。对于字符串,!s
相当于s!=''代码>。所以$(this.val()
是$(this.val()!=''的缩写代码>。