我想从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+'"]')
获取相同的元素属性时,我没有返回任何元素来检查该元素..!
任何解决方案..?
答案 0 :(得分: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>