Necesitaría verificar una entrada específica en un conjunto de campos donde los elementos están definidos solo por un valor diferente:

      <fieldset class="collapsible">
        <legend onclick="toggleFieldset(this);">Opzioni</legend>
        <div style="">
          <table class="options">
                <td class="card-fields">
                    [...]
                    <label class="floating"><input type="checkbox" name="f_status[]" id="f_status_" value="5" />Chiuso</label>
                    <label class="floating"><input type="checkbox" name="f_status[]" id="f_status_" value="6" />Rifiutato</label>
                    [...]
      </fieldset>

Lo he intentado de muchas maneras en jQuery con algo como:

$("#f_status_").each(function(){
   if (this.value == 2) {
      this.trigger("click");
   }
})

Pero no hubo suerte. ¿Alguna ayuda?

Gracias.

0
Fed C 5 feb. 2019 a las 19:29

2 respuestas

La mejor respuesta

No puede reutilizar el mismo id para varios elementos. Eso es crimen en HTML. Use clases en su lugar y use .each() y para que .trigger() funcione, envuélvalo dentro de $():

$(function() {
  $(".f_status_").each(function() {
    if (this.value == 5) {
      $(this).trigger("click");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="floating"><input type="checkbox" name="f_status[]" class="f_status_" value="5" /> Chiuso</label>
<label class="floating"><input type="checkbox" name="f_status[]" class="f_status_" value="6" /> Rifiutato</label>
$(function() {
  $(".f_status_").each(function() {
    if (this.value == 6) {
      $(this).trigger("click");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="floating"><input type="checkbox" name="f_status[]" class="f_status_" value="5" /> Chiuso</label>
<label class="floating"><input type="checkbox" name="f_status[]" class="f_status_" value="6" /> Rifiutato</label>

En caso de que no pueda cambiar el HTML, lo cual no estoy de acuerdo por completo ya que es un HTML incorrecto, puede hacer algo como esto:

$(function() {
  $('[name="f_status[]"]').each(function() {
    if (this.value == 6) {
      $(this).trigger("click");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="floating"><input type="checkbox" name="f_status[]" id="f_status_" value="5" /> Chiuso</label>
<label class="floating"><input type="checkbox" name="f_status[]" id="f_status_" value="6" /> Rifiutato</label>

De todos modos, nunca recomendaré este enfoque.

0
Praveen Kumar Purushothaman 5 feb. 2019 a las 16:45

EDITAR : usa la respuesta de @Praveen Kumar Purushothaman.

En primer lugar, no debería utilizar id s más de una vez por documento.

En cuanto a su código JavaScript: El value de un <input> se devuelve como un String, no como un Number. Además, si desea usar trigger, debe envolver el elemento en una colección jQuery. Vea un ejemplo de trabajo a continuación:

$('.card-fields_input').each(function() {
  if (this.value === '2') {
    $(this).trigger('click');
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="collapsible">
  <legend onclick="toggleFieldset(this);">Opzioni</legend>
  <div style="">
    <table class="options">
      <tr>
        <td class="card-fields">
          <label class="floating">
            <input type="checkbox" name="f_status[]" class="card-fields_input" value="1" />
            Chiuso
          </label>
          <label class="floating">
            <input type="checkbox" name="f_status[]" class="card-fields_input" value="2" />
            Rifiutato
          </label>
        </td>
      </tr>
    </table>
  </div>
</fieldset>
0
David 5 feb. 2019 a las 16:56