0

可能重复:
如果是动态生成的,我如何更改下拉菜单中的选项?

我正在使用这个可以生成一些下拉菜单和文本输入字段的 JSFIDDLE。具体来说它的作用:它动态生成一组输入字段,其中 1 个集合 = 3 个下拉菜单和 1 个文本输入字段。我正在使用它在我的 Web 表单上生成多达 15 个,这些表单将使用 PHP 提交到数据库。

这是小提琴

我需要做的是:
让我们说在上面链接的这个 jsfiddle 中,有人选择 5 并单击添加按钮,因此它将动态生成 5 组输入,其中 1 组 = 3 个下拉菜单 + 1 个文本输入字段和 1 个删除按钮删除该特定集。现在让我们选择第 1 组。如果用户在该组的第一个下拉列表中选择了某些内容,则它应该更改同一组中其余两个下拉列表中可用的选项。(我的意思是说它应该根据第一个下拉菜单中选择的主题更改其余下拉菜单中的选项。)

例如,我想用我的工作 jsfiddle 做什么,你可以参考这个链下拉列表

我从未使用过 javascript,这是我在 Web 表单中遇到的唯一 javascript 部分并面临问题。需要帮忙

4

3 回答 3

1

只需添加以下代码,将接下来的两个选择更改为第一个中选择的值:

$('#dropbox').on('change', 'select', function() {
    if (! $(this).prev().length) { //if this is the first select
        val = $(this).val();//take value of first select
        $(this).next().val(val);       //and set it to the
        $(this).next().next().val(val);//two next selects
    }
})​;

看我的工作演示

更新
所以在 OP 评论之后,我在这里添加一个示例来替换接下来两个选择的选项,而不是像我之前的示例那样仅从现有的选项中进行选择,这里是:

$('#dropbox').on('change', 'select', function() {
    if (! $(this).prev().length) { //if this is the first select
        //val = $(this).val();//take value of first select
        $(this).next().html($("<option>").val("0").text("NEW OPT 1").add( $("<option>").val("1").text("NEW OPT2")));
        $(this).next().next().html($("<option>").val("0").text("GOOD OPT 1").add( $("<option>").val("1").text("GOOD OPT2")));
    }
});

观看现场演示

于 2012-10-13T15:43:39.863 回答
0

如果我正确理解您希望在其中一个更改时将每个选择更改为同一行的相同值,我相信此演示可以满足您的需求

http://jsfiddle.net/E3gWX/1/

编辑:

您最初的概念对于依赖链选择来说太原始​​了。这是一个演示,可以让您更接近您所需要的 http://jsfiddle.net/Ywzjv/2​​/

于 2012-10-13T15:28:47.393 回答
0

在这里,链接- 它只执行下一个,而不是级联,但您可以使用另一个 .each(:

$(function() {
    $("select[id!=sel]").live('change',function(e) {
        selectedValue = $(this).find(":selected").val()
        if ($(this).next().attr('name').match(/input[0-9]_[0-9]/)) {
            $(this).next().find('option').each(function() {
                if ($(this).val() == selectedValue) {
                    $(this).hide();
                } else {
                    $(this).show();
                }
            })
        }
    })
})
于 2012-10-13T16:50:04.203 回答