我有一系列选择下拉列表:
<select name="item[1]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[2]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[3]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[4]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
我正在尝试使用Jquery解析它们。名称中的数字由我数据库中项目的ID号填充。我基本上想要解析每一个,如果是,则使用ID从数据库中获取项目的价格以计算总数。这对Jquery来说甚至可能吗?我可以做其余的代码没问题,我只需要帮助解析所有item
并返回每个代码的值和ID。
答案 0 :(得分:1)
以下是完整示例( getIds
方法是您想要的部分)
function getIds(){
var selected = $('select[name^="item["]').filter(function(){
return this.value == 'Yes';
}).map(function(){
return this.name.match(/\d+/);
});
return selected.get();
}
// just for display purposes
// you should call the getIds() method when you need to..
$('select').change(function(){
var ids = getIds();
$('.results').text( ids );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="item[1]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[2]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[3]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[4]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<div class="results"></div>
&#13;
答案 1 :(得分:1)
我会使用jQuery attribute starts with selector,并与.map()
结合使用以获取所选项目的列表。
这是一个可运行的片段,在单击按钮后返回所选项目的数组。由你来取决于物品ID并产生你的价格。
$("button").on("click", function() {
var ids = $('select[name^="item"]').map(function() {
if ($(this).val() === "Yes")
return this.name.replace(/\D/g,'');
else
return null;
}).toArray();
alert(ids);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="item[1]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[2]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[3]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<select name="item[4]">
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<button>Get Price</button>
答案 2 :(得分:0)
我没有测试过,但你可以尝试这样的事情:
$("select[name^='item']").each(function(){
console.log($(this).attr("name") + ": " + $(this).find(":selected").attr("value"));
});
稍加调整后,您可以将其转换为键值对,然后,如果我正确理解了问题,可能会使用eval()
来获得所需的值。