如果textarea为空,则显示/隐藏消息

时间:2017-11-29 16:05:27

标签: jquery checkbox

我有4个textareas和一个被禁用的提交按钮,除了每个textarea之外还有一个复选框来启用它们。

选中复选框时:

1-显示一条消息(不要让此激活的textarea为空)。 2-提交按钮保持禁用状态。 3-开始写入时:启用消息隐藏和提交按钮。

取消选中复选框时:

1-消息隐藏,

与该复选框相关的2- textarea已清除

3-提交按钮返回禁用状态。

使用下面的代码,这仅适用于第一个textarea。 但对于其他textareas我只有这个问题:

1-开始写入时:消息一直显示,提交按钮保持禁用状态。 我该如何解决这个问题?

//Function that handle the checkbox
$('input:checkbox').change(function() {
if ($(this).prop('checked')) {
$(".textareaalert").text("Don't let this activated textarea empty");
 $(".textareaalert").slideDown("slow"); 
$("#submit").attr("disabled", "disabled");   
  } else {
    $(".textareaalert").slideUp("slow");
    $("#submit").attr("disabled", "disabled");
    $("textarea").val('');      
     }
 });

 //Function that handle the textarea
$("textarea").keyup(function(){
var textareaLength = $("textarea").val().length;
if ( textareaLength ==0 ) {
    $(".textareaalert").text("Don't let this activated textarea empty");
    $(".textareaalert").slideDown("slow");
    $("#submit").attr("disabled", "disabled");
} else {
    $(".textareaalert").slideUp("slow");
    $("#submit").removeAttr("disabled");
}
}); 

1 个答案:

答案 0 :(得分:1)

在代码的第二部分中,您使用$("textarea").keyup(function(){ var textareaLength = $(this).val().length; if ( textareaLength ==0 ) { $(".textareaalert").text("Don't let this activated textarea empty"); $(".textareaalert").slideDown("slow"); $("#submit").attr("disabled", "disabled"); } else { $(".textareaalert").slideUp("slow"); $("#submit").removeAttr("disabled"); } }); 。 此行将采用第一个textarea的值,而不是当前值。 试试这个:

var arr = await [1,2,3,4,5].map(async (index) => { 
    return await new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(index);
            console.log(index);
        }, 1000);
    });
});
console.log(arr); // <-- [Promise, Promise, Promise ....]
// i would expect it to return [1,2,3,4,5]