如何从js中的元素列表中获取元素,该元素具有自定义属性?

问题描述 投票:0回答:1

我想从jQuery中的相同元素列表中获取具有服装value属性的所有元素。

我有以下HTML表单:

<label>name <input type="text" name="name" value="value"></label>
<label>value1 <input type="radio" name="name1" value="value1"></label>
<label>value2 <input type="radio" name="name1" value="value2"></label>
<label>value3 <input type="radio" name="name1" value="value3"></label>
<label>value4 <input type="checkbox" name="name2[]" value="value4"></label>
<label>value5 <input type="checkbox" name="name2[]" value="value5"></label>

我确实尝试了以下代码:

form = $('form');
form_data = {
    'name':'test value',
    'name1':'value2',
    'name2[check]':'value5',
};
$.each(form_data,function(i,v){
    input = form.find('[name="'+i+'"]');
    inputtype = input.attr('type');

    if(inputtype == 'checkbox' || inputtype == 'radio'){
        input.has('[value="'+v+'"]').prop('checked',true);
    }else{
        input.val(v);
    }
});

但是当我尝试使用input.has('[value="'+v+'"]')获取相同的元素属性时,我没有返回任何元素来检查该元素..!任何解决方案..?

javascript jquery checkbox attributes radio
1个回答
0
投票

你可以使用filter,这会将变量input减少到只有一个等于变量v的值

这是片段。

$(function() {

  var form = $('form');

  var form_data = {
    'name': 'test value',
    'name1': 'value2',
    'name2[]': 'value5',
  };

  $.each(form_data, function(i, v) {
    var input = form.find('[name="' + i + '"]');
    var inputtype = input.attr('type');

    if (inputtype == 'checkbox' || inputtype == 'radio') {
      input.filter(function() {return this.value === v;}).prop('checked', true);
    } else {
      input.val(v);
    }
  });


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <label>name <input type="text" name="name" value="value"></label>
  <label>value1 <input type="radio" name="name1" value="value1"></label>
  <label>value2 <input type="radio" name="name1" value="value2"></label>
  <label>value3 <input type="radio" name="name1" value="value3"></label>
  <label>value4 <input type="checkbox" name="name2[]" value="value4"></label>
  <label>value5 <input type="checkbox" name="name2[]" value="value5"></label>
</form>

更多文档:http://api.jquery.com/filter/

© www.soinside.com 2019 - 2024. All rights reserved.