Как отключить и включить кнопку отправки на основе входных значений

Мне нужно включить следующую кнопку, когда значения вставляются в текстовую область, а текстовая область не пуста. Это мой код:

 <div class = "preview_field content-post-1stpage-next">
      <label class = "col-md-5 mt-5" for = "content">tags</label><br>
      <p class = "text-muted"><small class = "text-muted"><textarea disabled = "yes" id = "preview_tags placeholder = "tags...!"></textarea></small></p>
</div>


<div class = "post-1stpage-next text-center">
     <button name = "wizard_goto_step" type = "submit" value = "{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
     <input type = "submit" value = "{% trans 'next' %}" disabled = "disabled"/>
</div>

и это код jquery, который я использовал, он даже не входит в его оператор if:

$(document).ready(function() {
  $('#preview_field > label > small > textarea').on('keyup', function() {
    let empty = false;

    $('#preview_tags > textarea').each(function() {
      empty = $(this).val().length == 0;

    });
    if (empty)
      $('.post-1stpage-next input').attr('disabled', 'disabled');
       
    else
      $('.post-1stpage-next input').attr('disabled', false);
  });
});
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
150
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что ваш селектор, который связывает обработчик событий, неверен. #preview_field должно быть .preview_field, так как это класс, а не идентификатор. Кроме того, small > textarea является ребенком p, а не label.

Как только это будет исправлено, вы можете упростить логику, предоставив логический результат проверки длины значения поля на prop('disabled'). Обратите внимание, что использование trim() препятствует тому, чтобы пробелы были допустимым значением.

С учетом всего сказанного, попробуйте следующее:

$(document).ready(function() {
  $('.preview_field > p > small > textarea').on('keyup', function() {
    $('.post-1stpage-next input').prop('disabled', this.value.trim().length === 0);
  });
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "preview_field content-post-1stpage-next">
  <label class = "col-md-5 mt-5" for = "content">tags</label><br>
  <p class = "text-muted">
    <small class = "text-muted">
      <textarea id = "preview_tags" placeholder = "tags...!"></textarea>
    </small>
  </p>
</div>


<div class = "post-1stpage-next text-center">
  <button name = "wizard_goto_step" type = "submit" value = "{{ wizard.steps.prev }}">prev step</button>
  <input type = "submit" value = "next" disabled = "disabled" />
</div>

Нашел ответ, я могу отключить или включить кнопку в зависимости от размера массива:

//enter code here`enable or disable next button based on the array length
if (array && array.length > 0) {
   $('.post-1stpage-next input').removeAttr('disabled');
}else{
   $('.post-1stpage-next input').attr('disabled','disabled');

}

Другие вопросы по теме