javascript 当文本和文本区域为空时禁用/启用按钮

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19806174/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 16:52:02  来源:igfitidea点击:

Disable / Enable button when the text and textarea are empty

javascriptjquerytextarea

提问by jovenne

I have this code that disable the button when the text is empty, but I have a textarea html code. How can I include this that when the text and textarea are both empty the button will be disabled and when both are filled it enables. I tried the code below and it works on text only. Any ideas?

我有这段代码,当文本为空时禁用按钮,但我有一个 textarea html 代码。我怎么能包括这个,当文本和文本区域都为空时,按钮将被禁用,当两者都被填充时它会启用。我尝试了下面的代码,它仅适用于文本。有任何想法吗?

$(document).ready(function() {
    $('input[type="submit"]').attr('disabled', true);
    
    $('input[type="text"]').on('keyup',function() {
        if($(this).val() != '') {
            $('input[type="submit"]').attr('disabled', false);
        } else {
            $('input[type="submit"]').attr('disabled', true);
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" name="textField" />
<textarea rows="4" cols="30" ></textarea>
<input type="submit" value="next" />

回答by rynhe

You miss the textareaselector in jQuery

你错过了textareajQuery 中的选择器

$(document).ready(function() {
    $('input[type="submit"]').attr('disabled', true);
    
    $('input[type="text"],textarea').on('keyup',function() {
        var textarea_value = $("#texta").val();
        var text_value = $('input[name="textField"]').val();
        
        if(textarea_value != '' && text_value != '') {
            $('input[type="submit"]').attr('disabled', false);
        } else {
            $('input[type="submit"]').attr('disabled', true);
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" name="textField" /><br>
<textarea rows="4" cols="30" id="texta"></textarea><br>
<input type="submit" value="next" />

回答by pala?н

You can do this using the .prop()method like:

您可以使用以下.prop()方法执行此操作:

// Cache the elements first
var $text = $('input[type="text"]');
var $textarea = $('textarea');
var $submit = $('input[type="submit"]');

// Set the onkeyup events
$submit.prop('disabled', true);
$text.on('keyup', checkStatus);
$textarea.on('keyup', checkStatus);

// Set the event handler
function checkStatus() {
    var status = ($.trim($text.val()) === '' || $.trim($textarea.val()) === '');
    $submit.prop('disabled', status);
}


F.Y.I.

供参考

As mentioned in the .prop() API Documentation:

如中所述.prop() API Documentation

Before jQuery 1.6, the .attr()method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior. As of jQuery 1.6, the .prop()method provides a way to explicitly retrieve property values, while .attr()retrieves attributes.

在 jQuery 1.6 之前,该.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。从 jQuery 1.6 开始,该.prop()方法提供了一种在检索属性的同时显式检索属性值的方法.attr()



FIDDLE DEMO

小提琴演示

回答by Rituraj ratan

use prop

使用道具

$('input[type="submit"]').prop('disabled', true);
$('input[type="text"],textarea ').on('keyup',function() {
    if($(this).val()) {
        $('input[type="submit"]').prop('disabled' , false);
    }else{
        $('input[type="submit"]').prop('disabled' , true);
    }
});

by attr we can do by

通过 attr 我们可以做到

 $('input[type="submit"]').attr('disabled', 'disabled');
    $('input[type="text"],textarea ').on('keyup',function() {
        if($(this).val()) {
            $('input[type="submit"]').removeAttr('disabled');
        }else{
            $('input[type="submit"]').attr('disabled','disabled');
        }
    });

see .prop() vs .attr()

参见.prop() 与 .attr()

回答by themightysapien

Just check both input feild and textarea. For that you can bind the both fields to keyup event and check the value

只需检查输入字段和文本区域。为此,您可以将两个字段绑定到 keyup 事件并检查值

$('input[type="submit"]').prop('disabled', true);
$("#yourtextfield,#yourtextarea").on("keyup","#parentdiv",function(){
if($("#yourtextfield").val() == '' || $("#yourtextarea").val() == ''){
   $('input[type="submit"]').prop('disabled' , true);
   }
else{
   $('input[type="submit"]').prop('disabled' , false);
   }
})

回答by mehmetakifalp

I think you have to check space.

我认为你必须检查空间。

$("textarea").on('mouseout', function(){
  if (!$.trim($("textarea").val())) {
    alert("empty");
 }
});

test it : http://jsfiddle.net/mehmetakifalp/ef5T9/

测试一下:http: //jsfiddle.net/mehmetakifalp/ef5T9/

回答by Jawwad Ali Khan

<input type="text" name="textField" />
<textarea rows="4" cols="30" id="texta"></textarea>
<input type="submit" value="next" />

<script type="text/javascript">
    $(document).ready(function() {
        $('input[type="submit"]').attr('disabled', true);
        $('input[type="text"],textarea').on('keyup',function() {
        var textarea_value = $("#texta").val();
        var text_value = $('input[name="textField"]').val();

        if(textarea_value != '' && text_value != '') {
            $('input[type="submit"]').attr('disabled' , false);
        }else{
            $('input[type="submit"]').attr('disabled' , true);
        }
        });

    });
</script>

回答by Ufenei augustine

The selected answer does the job but it is not enough. A text area and text field filled with spaces ( pressing the space bar several times) will enable the submit button.

选定的答案可以完成工作,但这还不够。填充了空格的文本区域和文本字段(多次按下空格键)将启用提交按钮。

You therefore need to apply $.trim()to the values from these fields before passing them to the if statement as shown below

因此,您需要先应用$.trim()这些字段中的值,然后再将它们传递给 if 语句,如下所示

$(document).ready(function() {
$('input[type="submit"]').attr('disabled', true);

$('input[type="text"],textarea').on('keyup',function() {
    var textarea_value = $.trim($("#texta").val());
    var text_value = $.trim($('input[name="textField"]').val());

    if(textarea_value != '' && text_value != '') {
        $('input[type="submit"]').attr('disabled', false);
    } else {
        $('input[type="submit"]').attr('disabled', true);
    }
});
});

回答by sunitkatkar

I needed a solution where there are 2 text fields and a Submit button. The business logic was that the user should type in a value in any one of the text fields at a minimum to enable the Submit button.

我需要一个解决方案,其中有 2 个文本字段和一个提交按钮。业务逻辑是用户应至少在任一文本字段中键入一个值以启用提交按钮。

Here is my solution which I used in my code. It is not the best/optimal solution possibly but it did the job. Do comment if you have a better way.

这是我在代码中使用的解决方案。它可能不是最好/最优的解决方案,但它完成了工作。如果您有更好的方法,请发表评论。

//Enable Submit button for search only on text input

$(".inputFieldCSSClass").on('keyup', function(){
     var isEmpty = !($.trim($("#inputText1").val()).length > 0 || 
                     $.trim($("#inputText2").val()).length > 0);
      $("#btnSubmit").prop('disabled', isEmpty);
 });