1

这源于我原来的问题。我正在扩展它。

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);
});

除了一个重要问题外,这段代码运行良好(也许不是最干净的?)。即使它是一个多重选择器,当两个选项都被选中时,只有一个option被标记为:selectedDOM,这意味着只有一个data-url{row_id}被输入。如果两者都被选中,我需要两者。

我希望这是有道理的。谢谢你的帮助。

4

3 回答 3

1

更新

向 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'))
    })
})

http://jsfiddle.net/5ctDC/1/

只要.map它,你就会得到一个包含数据的数组。

$('option:selected', this).map(function() {
    return $(this).data('url')
})

["week_1", "week_2"]

http://jsfiddle.net/5ctDC/

于 2012-06-05T22:30:21.367 回答
0

在不相关的注释中,您不应该使用不以字母开头的 id。

于 2012-06-05T22:46:05.703 回答
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/(我做了输入显示,所以你可以直观地看到发生了什么)

于 2012-06-05T22:03:06.120 回答