【问题标题】:Dynamically add dropdown fields and layout issue动态添加下拉字段和布局问题
【发布时间】:2016-10-20 00:58:44
【问题描述】:

编辑:

感谢mohd afzal 它创建了下拉菜单,但我仍然有一些错误:

  • 布局并非应有的样子(见图)
  • 在您选择第一个下拉列表中的值后,创建的第二个下拉列表没有响应。


我遵循了这个,它有效,但给我带来了不同的问题。 (Add multiple fields to form)

当前问题:

  • 我得到的是输入文本字段,而不是我创建的下拉菜单
  • 布局混乱(见图)(我需要额外的字段作为我的下拉框,并且金额字段应该使用相同的代码,因此只允许使用数字)
  • id 和 realName 未显示在图像中以防止显示名称

点击“添加更多”之前的表单图像。

使用代码:

jQuery

<script>
$(function() {
    $("#addMore").click(function(e) {
        e.preventDefault();
        $("#fieldList").append("<li>&nbsp;</li>");
        $("#fieldList").append("<li><input type='text' name='ddl[]' placeholder='Choose a project' /></li>");
        $("#fieldList").append("<li><input type='text' name='ddl2[]' placeholder='Choose a date' /></li>");
        $("#fieldList").append("<li><input type='text' name='amount[]' placeholder='Amount' /></li>");
    });
});
</script>

HTML

<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST" name="contact">
    <div class="row uniform 50%">
        <div class="6u 12u(mobilep)">
            Your personal card number
            <input type="text" name="card2" id="card" value="<?php echo $_SESSION['username']; ?>" placeholder="Card Number" readonly/>
        </div>
        <div class="6u 12u(mobilep)">
            Your name
            <input type="text" name="name2" id="name" value="<?php echo $_SESSION['realName']; ?>" placeholder="Your name" readonly/>
        </div>
    </div>
    <div class="row uniform 50%">
        <div class="6u 12u(narrower)">
            Order tickets for a project.
        </div>
    </div>
    <div class="row uniform 50%" id="fieldList">
        <div class="4u 12u(narrower)">
            <select name="ddl[]" id="ddl[]" onchange="configureDropDownLists(this,document.getElementById('ddl2'))">
                <option disabled selected>Select a project</option>
                <option value="Smile">Project Smile</option>
                <option value="Sand">Project Sand</option>
                <option value="Schmuck">Project Schmuck</option>
            </select>
        </div>
        <div class="4u 12u(narrower)">
            <select id="ddl2[]" name="ddl2[]">
                    <option disabled selected>Select a date</option>
            </select>
        </div>
        <div class="2u 12u(narrower)">
            <input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57' name="amount[]" id="amount[]" value="" placeholder="Amount" />
        </div>
    </div>  
    <div class="row uniform">
        <div class="12u">
        </div>
    </div>
        <div class="4u 12u(mobilep)">   
            Total price.(In EUR)
            <input type="text" name="total2" id="total" value=""  readonly/>
        </div>

        <div class="row uniform">
            <div class="12u">
                <ul class="actions align-center">
                    <li><input type="submit" name="submit"value="Place Order"/></li>
                </ul>
            </div>
        </div>
</form>

【问题讨论】:

  • 您正在附加到#fieldListli 元素,该元素不存在(只有“下订单”按钮被li 包围)。我想说用一个名为“行字段”的 div 包装三个 div 元素(4u 12u 更窄,4u 12u 更窄,2u 12u 更窄)。然后检查 uit jQuery 的 clone 函数以在单击时复制此 div。

标签: jquery html contact-form


【解决方案1】:

您正在附加到 #fieldList 的 li 元素,该元素不存在(只有“Place order”按钮被 li 包围)。我会说将三个输入元素包装在一个 div 中,并在需要时克隆该 div。

这里有一个例子供你完善:

var $addButton = $('#add-dynamic-field');
var $dynamicFields = $('#dynamic-fields').find('.dynamic-field');

$addButton.click(function() {
   // Clone the last '.dynamic-field' div and insert it
   $dynamicFields.last().clone().insertAfter($(this));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="" method="POST" name="contact">
<div class="row uniform 50%" id="dynamic-fields">
    <div id="add-dynamic-field">Add a new field!</div>
    <div class="dynamic-field">
        <div class="4u 12u(narrower)">
            <select name="ddl[]" id="ddl[]" onchange="configureDropDownLists(this,document.getElementById('ddl2'))">
                <option disabled selected>Select a project</option>
                <option value="Smile">Project Smile</option>
                <option value="Sand">Project Sand</option>
                <option value="Schmuck">Project Schmuck</option>
            </select>
        </div>
        <div class="4u 12u(narrower)">
            <select id="ddl2[]" name="ddl2[]">
                <option disabled selected>Select a date</option>
            </select>
        </div>
        <div class="2u 12u(narrower)">
            <input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57' name="amount[]" id="amount[]" value="" placeholder="Amount" />
        </div>
    </div>
</div>
<div class="4u 12u(mobilep)">
    Total price.(In EUR)
    <input type="text" name="total2" id="total" value="" readonly/>
</div>
<div class="row uniform">
    <div class="12u">
        <ul class="actions align-center">
            <li>
                <input type="submit" name="submit" value="Place Order" />
            </li>
        </ul>
    </div>
</div>
</form>

【讨论】:

  • 奇怪,当我尝试它时它根本不起作用,但是当我运行代码 sn-p 它确实起作用:o 而且我的第二个下拉菜单也不听第一个: s
  • 无法编辑以前的评论...我设法让第二个下拉列表来收听:D
【解决方案2】:
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST" name="contact">

    <div class="row uniform 50%">
        <div class="6u 12u(narrower)">
            Order tickets for a project.
        </div>
    </div>
    <div class="row uniform 50%" id="fieldList">
        <div class="4u 12u(narrower)">
            <select name="ddl10" id="ddl10" onchange="configureDropDownLists(this,document.getElementById('ddl20'))">
                <option disabled selected>Select a project</option>
                <option value="Smile">Project Smile</option>
                <option value="Sand">Project Sand</option>
                <option value="Schmuck">Project Schmuck</option>
            </select>
        </div>
        <div class="4u 12u(narrower)">
            <select id="ddl20" name="ddl20">
                    <option disabled selected>Select a date</option>
            </select>
        </div>
        <div class="2u 12u(narrower)">
            <input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57' name="amount0" id="amount0" value="" placeholder="Amount" />
        </div>
    </div>  
    <div class="row uniform">
        <div class="12u">
        </div>
    </div>
    <input type='button' id='addMore' value='Add more'>
        <div class="4u 12u(mobilep)">   
            Total price.(In EUR)
            <input type="text" name="total0" id="total0" value=""  readonly/>
        </div>

        <div class="row uniform">
            <div class="12u">
                <ul class="actions align-center">
                    <li><input type="submit" name="submit"value="Place Order"/></li>
                </ul>
            </div>
        </div>
</form>













 $(function() {
          var count=0;
          $("#addMore").click(function(e) {
              e.preventDefault();
              count=count+1;
              $("#fieldList").append("<li>&nbsp;</li>");
              $("#fieldList").append("<li>"
              +"<select name='ddl1" + count + "' id='ddl1" + count + "' >"
              +'<option>Select a project</option>'
              +'<option value="Smile">Project Smile</option><option value="Sand">Project Sand</option>'
              +'<option value="Schmuck">Project Schmuck</option></select>'
              +'</li>');

              $("#fieldList").append("<li>"
              +"<select id='ddl2" + count + "' name='ddl2" + count + "'>"
              +'<option>Select a date</option></select>'
              +"</li>");
              $("#fieldList").append("<li><input type='text' name='amount" + count + "' placeholder='Amount' /></li>");
          });
      });

【讨论】:

  • 感谢您,我确实收到了一些错误:lay-out is still not doing what is should dothe second dropdown it creates doesn't fill in itself after I've selected a value in the first one.(我会在帖子中添加一张图片供您查看)
  • 1)其实我忘记在下拉列表中使用onchange事件了,你可以像这样在下拉列表中使用那些东西 + "
猜你喜欢
  • 2016-10-19
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多