当用户单击输入字段时,我试图禁用表单提交按钮

Way*_*yne 0 html javascript jquery

<html>   
 <form class="form-disable">
            <br>
            <input type="text" id="message2">
            <br>
            <button id="myButton" type="submit" onclick="text()"disabled>Generate Text</button>
    </form>
</html>
    
<script>
    // $("html").click(function(event){
    //     $("#myButton").attr("disabled", "disabled");
    //     event.preventDefault();
    // })
    
    function text(){
        let $box = $('#message2').val();
        alert($box);
    }
    
    $("#message2").click(function(){
        $("#myButton").removeAttr("disabled");
        // event.preventDefault();
    })
</script>
Run Code Online (Sandbox Code Playgroud)

我试过使用带有警报的注释掉功能,它似乎在我点击屏幕上的任何地方时都会出现警报。所以,我担心我的问题是当我单击文本输入字段时,注释掉的函数也会添加禁用属性。当该功能被注释掉时,提交按钮将被禁用,直到我单击输入字段,但是一旦用户单击输入框/字段,我无法弄清楚如何禁用该按钮。

Joh*_*ner 5

为什么不直接检测blur事件,当有问题的元素失去焦点(即有人点击它之外)时会发生这种情况。也使用.prop而不是.attr

$("#message2").blur(function(){
    if ($(this).val() =='') {
        $("#myButton").prop( "disabled", true );
    } else {
        $("#myButton").prop( "disabled", false );
    }
})
Run Code Online (Sandbox Code Playgroud)

  • 您可以将其缩短为一行 `$("#myButton").prop( "disabled", ($(this).val() == '' ) ? true:false);` (2认同)