代码之家  ›  专栏  ›  技术社区  ›  Dan

如何在从多选下拉列表中选择选项值时动态生成文本框

  •  1
  • Dan  · 技术社区  · 12 年前

    我有一个多选下拉列表,用户可以从中选择多个项目。

    在选项值选择的基础上,动态文本框应以相同的形式生成。

    在选择单个选项时,应生成3个文本框。
    显示所选选项值的第一个文本框
    显示所选选项文本的第二个文本框
    第三个文本框显示为空。

    <html>
      <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
      </head>
      <body align="center">
        <input type="text" value="some text"/>
        <select id="multiple" multiple="multiple" style="width: 120px;height: 120px;">
          <option value="1" >Ashutosh</option>option value="6">Jems Bond</option>
          <option value="7">Danial Crack</option> option value="8">Dan Brown</option>
          <option value="9">Angilina Jolly</option>
        </select>
        <script>
          function displayVals() { 
            var multipleValues = $("#multiple").val() || [];
            $("input").val(multipleValues);
          }
          $("select").change(displayVals);displayVals();
        </script>
      </body>
    </html>
    
    1 回复  |  直到 12 年前
        1
  •  1
  •   gaurang171    12 年前

    在这里,我为您的查询制定了完整的解决方案。请查看演示链接,如下所示:

    演示 http://codebins.com/bin/4ldqp7a

    HTML格式

    <form id="frm">
      <select id="multiple" multiple="multiple" style="width: 120px;height: 120px;">
        <option value="1" >
          Ashutosh
        </option>
        <option value="6">
          Jems Bond
        </option>
        <option value="7">
          Danial Crack
        </option>
        <option value="8">
          Dan Brown
        </option>
        <option value="9">
          Angilina Jolly
        </option>
      </select>
      <div id="result">
      </div>
    </form>
    

    联合查询

    $(function() {
        $("#multiple").change(function() {
            var multipleValues = $("#multiple").val() || "";
            var result = "";
            if (multipleValues != "") {
                var aVal = multipleValues.toString().split(",");
                $.each(aVal, function(i, value) {
                    result += "<div>";
                    result += "<input type='text' name='opval" + (parseInt(i) + 1) + "' value='" + value.trim() + "'>";
                    result += "<input type='text' name='optext" + (parseInt(i) + 1) + "' value='" + $("#multiple").find("option[value=" + value + "]").text().trim() + "'>";
                    result += "<input type='text' name='option" + (parseInt(i) + 1) + "' value=''>";
                    result += "</div>";
                });
    
    
            }
            //Set Result
            $("#result").html(result);
    
        });
    });
    

    CSS格式

    #multiple{
      margin-bottom:10px;
      border:1px solid #333;
      background:#efefef;
      color:#000;
    }
    #result input{
      margin-left:5px;
      border:1px solid #333;
      background:#a4c4f4;
      margin-top:5px;
    }
    

    演示 http://codebins.com/bin/4ldqp7a