我有以下HTML代码。
<Select name=test[]>
<option value="">--Please Select--</option>
<option value="a">Test Value1</option>
</select>
<Select name=test[]>
<option value="">--Please Select--</option>
<option value="a">Test Value2</option>
</select>
<Select name=test[]>
<option value="">--Please Select--</option>
<option value="a">Test Value3</option>
</select>
现在,在提交表单之前,我想要执行以下操作
我相信我需要循环,但我无法找到我可以先获取所有值的初始语法。
我知道如何在为select元素指定'id'时检查是否选择了任何值。但在这种情况下,我有'name'属性,这是一个数组。
我试着去看不同的地方,但我并没有真正找到一个好的解决方案。可能我错过了什么。
如果需要任何进一步的信息,请告诉我。
答案 0 :(得分:3)
使用地图功能
var selected = $('select[name="test[]"]').map(function(){
if ($(this).val())
return $(this).val();
}).get();
console.log(selected);
答案 1 :(得分:1)
这不是一个完整的解决方案,但可能有希望指出你正确的方向(假设你使用jQuery)
以下代码应循环选择(当它们具有name='test[]'
时)并将任何值(非空白)添加到结果数组中。
var results = [];
$("select[name='test[]']").each(function(){
var val = $(this).val();
if(val !== '') results.push(val);
});
console.log(results);
答案 2 :(得分:1)
以下内容将允许您遍历具有除默认值“”之外的任何选定值的选择标记。您可以将其调整为任何其他不需要的值等。
$("select[name='test[]']").each(function(){
if($(this).val()!='')
{
//doStuff
}
});
答案 3 :(得分:0)
您可以通过这种方式检查和保存方框值
var results = [];
$("select[name='test[]']").each(function(index, val)
{
if ($(val).val() == "") {
//Not selected
}
else
{
//Selected
}
//Save results in an array based on the index of selects
results[index] = $(val).val();
});
然后你可以通过数组并根据索引检查值(或者你可以在.each()函数上面检查它)
答案 4 :(得分:0)
尝试这样做:
$("select[name='test[]']").on('change', function(){
if(this.value != ""){
alert(this.value);
}else{
alert('no values selected');
return false;
}
});
您必须获取change
事件的值,因此请使用属性选择器获取元素,然后您可以获取目标元素的值。
答案 5 :(得分:0)
如果您使用此:
var values = $('select[name^="test["]').map(function(){
if(this.value !== "") return this.value;
})
您将拥有一系列值。
要检查是否选择了一个,只需检查长度:values.length
答案 6 :(得分:0)
您可以使用filter()
仅返回具有值的selects
,然后map()
来获取其值:
var values = $('select[name="test[]"]').filter(function() {
return $.trim(this.value).length;
}).map(function() {
return this.value;
}).get();
显然,你不知道哪个选择具有哪个值,如果你需要知道,你必须使用元素'索引,因为它是唯一的唯一标识符(给定你的标记)。
以下内容将返回一个对象数组,其中包含元素的索引及其值:
var values = $('select[name="test[]"]').filter(function() {
return $.trim(this.value).length;
}).map(function() {
return { index: $(this).index(), value: this.value };
}).get();
要检查是否选择了任何内容,您只需检查values.length
:
if (!values.length) {
alert('Nothing was selected');
}