我有很多带有一个div的SELECT元素。我想这样做:
从这些选项值创建链接。例如:
Color: Black Green Pink
...
Size: S M L
...
Quantity: 1 2 3 4
...
点击链接时,链接值在组合框中被选中,值应显示在顶部:
Selected: Color - White, Size - S, Quantity - 3
链接应跳过第一个选项(颜色,大小等)。
` 颜色: 黑色 绿色 粉 橙子 紫色 白色 黄色 蓝色 海军 奶油
<select name="5043:finopt:1" size=1 >
<option value="Size:" selected>Size:</option>
<option value="S" >S</option>
<option value="M" >M</option>
<option value="L" >L</option>
<option value="XL" >XL</option>
</select>
<select name="5043:finopt:1" size=1 >
<option value="Size:" selected>Quantity</option>
<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
</select>
`
select元素的名称也总是不同的,并不总是5043:finopt:1
答案 0 :(得分:0)
首先,您必须添加一种方法来识别每个下拉框。既然你说他们的name
属性总是不同的,你必须添加另一种方法来识别它们。我们尝试在每个属性中添加data-name
属性(您可以使用任何名称)。
其次,你说&#34;链接应该跳过第一个选项&#34;。我解释这一点,因为您不希望用户能够选择第一个选项(例如颜色,大小,数量)。您可以通过在其上添加disabled
标记来使这些选项无法选择。
<select name="5043:finopt:1" size=1 data-name="size">
<option selected disabled>Size:</option>
...
</select>
要在点击链接时从下拉框中选择正确的值,您可以添加此jQuery代码段(假设每个链接文本的格式始终为Selected: Color - White, Size - S, Quantity - 3
):
$('a.select').on('click', function(e) {
e.preventDefault();
var text = $(this).text();
text = text.substring(text.indexOf(' ') + 1).split(',');
for (var i = 0; i < text.length; i++) {
var pair = text[i].trim().split(' - ');
$('select[data-name="' + pair[0].toLowerCase() + '"]').val(pair[1]);
}
});
修改强>
由于选择框标记无法修改,您想通过第一个选项选择它们,您可以这样做:
$('a.select').on('click', function(e) {
e.preventDefault();
var text = $(this).text();
text = text.substring(text.indexOf(' ') + 1).split(',');
for (var i = 0; i < text.length; i++) {
var pair = text[i].trim().split(' - ');
var a = $('select').filter(function() {
return $(this).children().first().text() == pair[0] + ':';
}).val(pair[1]);
}
});