Получение ввода fieldset по значению с помощью JavaScript или jQuery - PullRequest
0 голосов
/ 05 февраля 2019

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

      <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>

Я пробовал во многих отношениях в jQuery что-то вроде:

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

Но не повезло.Любая помощь?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

РЕДАКТИРОВАТЬ : используйте ответ @Praveen Kumar Purushothaman.

Прежде всего, вы не должны использовать id s более одного раза для документа.

Asдля вашего кода JavaScript: value для <input> возвращается как String, а не как Number.Также, если вы хотите использовать trigger, вам нужно обернуть элемент в коллекцию jQuery.Смотрите рабочий пример ниже:

$('.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 голосов
/ 05 февраля 2019

Нельзя использовать один и тот же id повторно для нескольких элементов.Это преступление в HTML.Вместо этого используйте классы и используйте .each(), а для работы .trigger() оберните его внутри $():

$(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>

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

$(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>

В любом случае, я никогда не буду рекомендовать этот подход.

...