Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当文本字段包含文本时启用按钮_Javascript_Jquery_Html - Fatal编程技术网

Javascript 仅当文本字段包含文本时启用按钮

Javascript 仅当文本字段包含文本时启用按钮,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)

我有一个文本字段和一个默认禁用的按钮。如果用户在文本字段中键入内容,然后离开该字段,则该按钮应处于启用状态

为什么我的代码不能按预期工作?这是一本书

HTML


我建议使用
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()!=''的缩写