使用JavaScript或jQuery按值获取字段集的输入

时间:2019-02-05 16:29:42

标签: javascript jquery html fieldset

我需要检查字段集中的特定输入,其中仅通过不同的值来定义元素:

      <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 :(得分:0)

不能将相同的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>

我永远不会推荐这种方法。

答案 1 :(得分:0)

编辑:使用@Praveen Kumar Purushothaman的答案。

首先,每个文档不应该使用id一次。

关于您的JavaScript代码:value的{​​{1}}作为<input>而不是String返回。另外,如果要使用Number,则必须将元素包装在jQuery集合中。请参见下面的工作示例:

trigger
$('.card-fields_input').each(function() {
  if (this.value === '2') {
    $(this).trigger('click');
  }
})