这源于my original question。我正在扩展它。
Html选择选项
<select id="1d" name="camp" multiple="multiple">
<option data-url0="week_1" value="Week 1">30th July</option>
<option data-url1="week_2" value="Week 2">6th August</option>
</select>
<input type="hidden" name="camp_url0" id="1e">
<input type="hidden" name="camp_url1" id="1f">
Jquery脚本我正在努力。
$("#1d").on("change", function () {
var url1 = $(this).children(":selected").data("url0");
var url2 = $(this).children(":selected").data("url1");
$("#1e").val(url0);
$("#1f").val(url1);
});
除了一个重要问题外,这段代码工作得很漂亮(可能不是最干净的?)。即使它是多选择器,只要选择了两个选项,DOM中只有一个option
被标记为:selected
,这意味着只输入了一个data-url{row_id}
。如果两者都被选中,我需要两者。
我希望这是有道理的。谢谢你的帮助。
答案 0 :(得分:1)
<强> UPD 强>:
将一些额外的“路由”数据添加到html
<select id="1d" name="camp" size="5" multiple>
<option data-url="week_1" data-id="1e" value="Week 1">30th July</option>
<option data-url="week_2" data-id="1f" value="Week 2">6th August</option>
</select>
并使用它
$("#1d").on("change", function () {
$('input[type=hidden]').val('');
$('option:selected', this).each(function() {
$('#' + $(this).data('id')).val($(this).data('url'))
})
})
<强> OLD 强>:
只需.map
它就会得到一个包含数据的数组。
$('option:selected', this).map(function() {
return $(this).data('url')
})
["week_1", "week_2"]
答案 1 :(得分:0)
浏览所选元素的所有:
$("#1d").on("change", function () {
var allurl1 = '', allurl2 = '';
$(this).children(":selected").each(function(){
allurl1 += $(this).data("url0");
allurl2 += $(this).data("url1");
});
$("#1e").val(allurl1);
$("#1f").val(allurl2);
});
工作演示:http://jsfiddle.net/maniator/mtAgS/(我显示了输入,以便您可以直观地看到会发生什么)
答案 2 :(得分:0)
在不相关的注释中,您不应该使用不以字母开头的id。