javascript - 选择值后的下拉列表创建新字段

标签 javascript jquery html

说明

我需要实现,选择下拉列表中的值后,它应该自动创建新行,如下图所示。

示例

如果选择了选项 A,它应该生成行号(在本例中为 1)、包含所选值名称的标题列和 2 个输入字段(日期从&日期到),在它之后如果(例如)我们选择选项C它应该再生成1个新行,只是带有新的行号(在这种情况下将是2)

drop down list

代码

简单的下拉列表:

<select>
  <option value="A">Option A</option>
  <option value="B">Option B</option>
  <option value="C">Option C</option>
  <option value="D">Option D</option>
</select>

我不知道如何实现它,我尝试过提高可见性,但离我需要的还很远......

还应将选定的选项插入到数据库中。

更新

同一选项不能选择两次,只能添加1次。如果单击错误,行附近还应该出现 X 以删除行。

行排序:

如果我选择C,之后是A,之后是D,它应该按顺序出现:

 1. C [      ]  [      ] X
 2. A [      ]  [      ] X
 3. D [      ]  [      ] X

如果我从列表中删除 A 它应该出现:

 1. C [      ]  [      ] X
 2. D [      ]  [      ] X -- this row number should change.

最佳答案

<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>

<script>

    $(document).ready(function () {

        $('#select_id').change(function () {
            var szTr;
            var iRowCount = 0;

            var szSelectedText = $(this).find('option:selected').text();


            if ($("#table tbody tr:has(td:eq(1):contains('" + szSelectedText + "'))").length > 0) {
                alert("Duplicate!!!!")
                return;
            }
            else {
                iRowCount = $('#table tbody tr').length + 1;
                szTr = "<tr>"
                szTr = szTr + "<td>" + iRowCount + "</td>";
                szTr = szTr + "<td>" + $(this).find('option:selected').text() + "</td>"
                szTr = szTr + "<td><input type='text' class='date_from'></td>"
                szTr = szTr + "<td><input type='text' class='date_to'></td>"
                szTr = szTr + "<td class='delete'>Delete</td>"
                szTr = szTr + "</tr>"
                $('#table tbody').append(szTr)
            }

        });

        $('#table').on('click','.delete',function () {
            $(this).closest('tr').remove();
            $('#btnSort').trigger('click');
        });

        function sortTable(table, order) {

            tbody = table.find('tbody');

            tbody.find('tr').sort(function (a, b) {
                if (order == "asc") {
                    return $('td:eq(1)', a).text().localeCompare($('td:eq(1)', b).text());
                } else {
                    return $('td:eq(1)', b).text().localeCompare($('td:eq(1)', a).text());
                }
            }).appendTo(tbody);
        }

        $('#btnSort').click(function () {

            var iCounter = 1;

            sortTable($('#table'), "asc")

            $('#table tbody tr').each(function () {

                $(this).find('td:eq(0)').text(iCounter);

                iCounter = iCounter + 1;

            });
        });

    });
</script>
</head>
<body>

<select id="select_id">
  <option value="A">Option A</option>
  <option value="B">Option B</option>
  <option value="C">Option C</option>
  <option value="D">Option D</option>
</select>

    <table id="table" >
        <thead>
  <tr>
    <td></td>
    <td>title</td>
    <td>Date from</td>
    <td>Date to</td>
  </tr>
            </thead>
        <tbody>



        </tbody>
</table>

    <input type="button" value="Sort Table" id="btnSort"/>
</body>
</html>

关于javascript - 选择值后的下拉列表创建新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34948787/

相关文章:

jquery - 在浏览器上居中元素

javascript - kendo ui 网格可从远程模板编辑弹出窗口

javascript - 如何在angular js中自动大写输入字段?

javascript - Nuxt.js:模块错误(来自./node_modules/eslint-loader/index.js):

javascript - 使用 PHP 的 jQuery Ajax POST 示例

javascript - 在 TweenMax 中向定向旋转添加完整旋转(360 度)

javascript - 悬停时CSS使图像变暗-在其周围添加一个href

html - 如何对 antd-table 进行排序,同时永远在表格顶部保留一个特殊行?

jquery - 如何在 Rails 中发布一个数组

javascript - RSelenium 单选按钮不可点击