Control de checkboxes activos (checked) con jquery?

Tengo varias opciones en un formulario de checkboxy un <textarea> Necesito que como mínimo uno de ellos no esté vacío, por ejemplo puede haber solo un checkbox :checked o ninguno en el caso de que el textarea no esté vacío. Lo que tengo es esto pero no funciona:

$('#myBtn_denegar').click(function() {
  var checkerror = 5;
  if ($('#1').is(':checked')) {
    checkerror = checkerror - 1;
  }
  if ($('#2').is(':checked')) {
    checkerror = checkerror - 1;
  }
  if ($('#3').is(':checked')) {
    checkerror = checkerror - 1;
  }
  if ($('#4').is(':checked')) {
    checkerror = checkerror - 1;
  }
  if ($('#5').val(':checked')) {
    checkerror = checkerror - 1;
  }
  if (checkerror == 0) {
    $('#denegar_submit').prop('disabled', false);
  } else {
    $('#denegar_submit').prop('disabled', true);
  }
});
<div class="col-md-2">
  <button id="myBtn myBtn_denegar" class='btn my-btn btn-primary btn-md my-btn'>lightbox</button>
</div>
<div class="modal-body">
  <form action="<?php echo $yomismo; ?>" method="post" class="center-element">
    <center>
      <h3>Seleccione uno o varios motivos</h3>
      <br>
      <input type="hidden" name="accion" value="denegar_ticket">
      <input type="hidden" name="ticket" value="<?php echo $ticket; ?>">
      <input type="checkbox" id="1" class="checkBox hidden" name="1">
      <label for="1" class="checkBoxLabel">1</label>
      <input type="checkbox" id="2" class="checkBox hidden" name="2">
      <label for="2" class="checkBoxLabel">2</label>
      <input type="checkbox" id="3" class="checkBox hidden" name="3">
      <label for="3" class="checkBoxLabel">3</label>
      <input type="checkbox" id="4" class="checkBox hidden" name="4">
      <label for="4" class="checkBoxLabel">4</label>
      <a href="#otro1" class="checkBoxLabel mya" data-toggle="collapse">OTRO</a>
      <br>
      <div id="otro1" class="collapse">
        <strong>Descripcción</strong>
        <textarea id="5" class="form-control" name="5"></textarea>
        <br>
        <br>
      </div>
    </center>
    <input type="submit" class="btn btn-primary">
  </form>
</div>

La idea es que cuando yo le haga click al boón en el que pone lightbox me vaya comprobando so yo selecciono alguna de las opciones o relleno el textarea...

También lo he probado de la siguiente forma:

$("input:checkbox:checked").each(   
    function() {
        alert("El checkbox con valor " + $(this).val() + " está seleccionado");
    }
);
<div class="col-md-2">
  <button id="myBtn myBtn_denegar" class='btn my-btn btn-primary btn-md my-btn'>lightbox</button>
</div>
<div class="modal-body">
  <form action="<?php echo $yomismo; ?>" method="post" class="center-element">
    <center>
      <h3>Seleccione uno o varios motivos</h3>
      <br>
      <input type="hidden" name="accion" value="denegar_ticket">
      <input type="hidden" name="ticket" value="<?php echo $ticket; ?>">
      <input type="checkbox" id="1" class="checkBox hidden" name="1">
      <label for="1" class="checkBoxLabel">1</label>
      <input type="checkbox" id="2" class="checkBox hidden" name="2">
      <label for="2" class="checkBoxLabel">2</label>
      <input type="checkbox" id="3" class="checkBox hidden" name="3">
      <label for="3" class="checkBoxLabel">3</label>
      <input type="checkbox" id="4" class="checkBox hidden" name="4">
      <label for="4" class="checkBoxLabel">4</label>
      <a href="#otro1" class="checkBoxLabel mya" data-toggle="collapse">OTRO</a>
      <br>
      <div id="otro1" class="collapse">
        <strong>Descripcción</strong>
        <textarea id="5" class="form-control" name="5"></textarea>
        <br>
        <br>
      </div>
    </center>
    <input type="submit" class="btn btn-primary">
  </form>
</div>

Pero tampoco hace ningún resultado, lo normal es que por lo menos haga algo cuando se interactua con el checbox no?

...

1
задан 30.12.2016, 12:19
0 ответов

Доказательство используя boolean i ощущается, что ты распределяешь стоимость textarea, сделав

$ ('#5') .val (':checked')

в меня понимать с этим условием ты ничего не подтверждаешь, так что идея была бы чем-либо подобным:

$('form').submit(function(e) {
 var checkerror = 0;
 if ($('#1').is(':checked')) {
  checkerror = 1;
  console.log($('#1'));
 }
 if ($('#2').is(':checked')) {
  checkerror = 1;
  console.log($('#2'));
 }
 if ($('#3').is(':checked')) {
  checkerror = 1;
  console.log($('#3'));
 }
 if ($('#4').is(':checked')) {
  checkerror = 1;
  console.log($('#4'));
 }
 if ($('#5').length>1) {
  checkerror = 1;
  console.log($('#5'));
 }

 if (checkerror == 0) {
  alert("Cancelado");
  e.preventDefault();
 } else {
  alert("Guarda");
 }
});

С этим одиноким, которое выполнит тебя, одно из условий подаст тебя

Редактирование Вначале это не поняло хорошо, чтобы предотвращать submit, то, что ты был бы должен делать, состоит в том, чтобы использовать событие "preventDefault ()", с prop то, что ты делаешь, состоит desabilitar кнопка, но посылает тебе submit также i направляет тебя, чтобы перезагружать страницу

1
ответ дан 03.12.2019, 17:55
  • 1
    Сейчас он не дает мне ошибку, но также не делает того, что он должен делать... А именно botó n está актив и возможно нажимать, хотя не будут выполнены условия... –  30.12.2016, 11:53
  • 2
    протестируй с условиями наоборот, а именно вкладывать блоки if (checkerror) –  30.12.2016, 11:56
  • 3
    а именно сначала false и потом true внутри if? я это протестировал и также оно я не функционирует... Я - неуклюжий человек с этим jquery xD –  30.12.2016, 12:02
  • 4
    Я издал ответ, попытайся сейчас посмотрим функционируй –  30.12.2016, 12:13
  • 5
    Я перемещаю тебя jsFiddle, где оно функционирует хорошо сделав какой-то pequeñ или я меняю https://jsfiddle.net/42yh1t4j / –  30.12.2016, 12:24

Теги

Похожие вопросы