使用下拉值添加的新输入字段

A new input field adding with dropdown value

本文关键字:输入 字段 新输入 添加      更新时间:2023-09-26
  1. 当用户单击"+"按钮时,应添加一行带有下拉列表和输入字段。我想将该输入字段名称作为每行的下拉值。

  2. 如果我在第一个下拉列表中选择"facebook",它不应该显示在第二个下拉列表中。 仅选择值不应显示在下一个下拉列表中。我做了那部分。但我的问题是,如果我在第二个下拉列表中选择"Google",在第三个下拉列表中选择"Yahoo"。同样,如果我单击第一个或第二个下拉列表,它不应该再次显示"Yahoo"。

请在下面找到代码所在的链接并修复它。

http://jsfiddle.net/mhmdsohail/v9uem13u/5/

$(document.body).on('click', '.add-more', function (e) {
    var lastSelect = $("select").last().find('option');
    var toAppend = '';
    if (lastSelect.length > 1) {
        toAppend += '<select name="select[]">';
        $.each(lastSelect, function (i, v) {
            if ($(this).text() !== $("select:last option:selected").text())
                toAppend += '<option value="' + $(this).val() + '">' + $(this).text() + '</option>';
        });
        toAppend += '</select>';
        toAppend += '<input type="text" name=""><br>';
    }
    $(".append-select").append(toAppend);
});

这个 JavaScript 代码可以满足你的要求:

(据我了解。这将从所有当前dropdowns(以及将来的(中删除所选选项,下一个输入字段将包含属性name,其值等于上次选择dropdown选项(

 $(document.body).on('click', '.add-more', function (e) {
                var lastSelect = $("select").last().find('option');
                var selectedOption = $('select:last').val();
                var toAppend = '';
                if (lastSelect.length > 1) {
                    toAppend += '<select name="select[]">';
                    $.each(lastSelect, function (i, v) {
                        if ($(this).text() !== $("select:last option:selected").text())
                            toAppend += '<option value="' + $(this).val() + '">' + $(this).text() + '</option>';
                    });
                    toAppend += '</select>';
                    toAppend += '<input type="text" name="' + selectedOption + '"><br>';
                }
                $(".append-select").append(toAppend);
                if ($('select:last > option').length > 1)
                        $("select").find('option[value=' + selectedOption + ']').remove();
            });

我试图尽量减少尽可能多的更改(只编辑了 3 或 4 行(。