【问题标题】:Creating Multiple Divs Based on Number Chosen in Drop Down Menu根据下拉菜单中选择的数字创建多个 div
【发布时间】:2015-04-23 21:10:51
【问题描述】:

所以我有一个下拉菜单,人们可以在其中选择他们拥有的商店数量。基于此选择,我需要为每个位置创建一个包含商店信息的 div。

例如,如果他们选择 3 家商店,则会显示三个相同的 div,供他们填写每个商店。

这是我的输入和 div 代码。

<input form='form1' type='number' name='numberOfLocations' 
    id='numberOfLocations' size="2" maxlength="2" />
<div class='businessSpecifics'>
    <label>URL Extension:</label>
    <br>
    <input form='form1' type='text' name='urlExtension' 
        placeholder="businessname" id='businessSpecificsURL' 
        class='businessSpecifics details' /><span>.byMyCompany.com</span>
    <br>
    <label>Login Email:</label>
    <br>
    <input form='form1' type='email' name='email' 
        placeholder='email' id='businessSpecificsEmail' 
        class='businessSpecifics details' />
    <br>
    <label>Password:</label>
    <br>
    <input form='form1' type='password' name='tempPswd' 
        placeholder="" 
        class='businessSpecifics details' />
    <br>
    <label>Business Website:</label>
    <br>
    <input form='form1' type='text' name='bussinessWebsite' 
        placeholder="Business Website" 
        class='businessSpecifics details' />    
</div>

【问题讨论】:

  • 我不知道从哪里开始说实话。我对代码还很陌生,所以即使指出我正确的方向也会有所帮助
  • 那么您可以使用javascript 或不使用jQuery 来执行此操作,如果您使用jQuery,请查找append()html() 函数。还要查找val() 函数以获取input 中的值。尝试后,在此处发布您尝试过的内容,以便我们为您提供帮助
  • 你需要一些东西来触发你想要的动作,对吧?因此,例如添加一个用户应该单击以生成 div 的按钮。然后,为该按钮添加一个事件处理程序:w3schools.com/jsref/event_onclick.asp。完成此操作后,您需要先选择一个父容器 (api.jquery.com/id-selector),然后按照 Joel 的建议使用 append() 或 html()。

标签: javascript jquery html


【解决方案1】:

$(function(){
  $("#numberOfLocations").change(function(){
       var value = $(this).val();
       $(".blockContainer").empty();
       for(var i = 0; i<value; i++){
            var block = $("<div>",{class:"block"});
            $(block).append($("div.businessSpecifics").html());
            $(".blockContainer").append(block);
         }
    }); 
  
 });
div.businessSpecifics{
  display:none;    
}
.block{
  width:160px;
  height:200px;
  border:solid 1px black;
  margin:10px;
  box-shadow:0px 0px 7px #000;
  padding:5px;
  position:relative;
  float:left;
  }
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<input  type='number' name='numberOfLocations' id='numberOfLocations' size="2" maxlength="2" />
<div class="blockContainer"></div>
<div class='businessSpecifics'>
    <label>URL Extension:</label>
    <br>
    <input  type='text' name='urlExtension' 
        placeholder="businessname" id='businessSpecificsURL' 
        class='businessSpecifics details' /><span>.byMyCompany.com</span>
    <br>
    <label>Login Email:</label>
    <br>
    <input  type='email' name='email' 
        placeholder='email' id='businessSpecificsEmail' 
        class='businessSpecifics details' />
    <br>
    <label>Password:</label>
    <br>
    <input  type='password' name='tempPswd' 
        placeholder="" 
        class='businessSpecifics details' />
    <br>
    <label>Business Website:</label>
    <br>
    <input  type='text' name='bussinessWebsite' 
        placeholder="Business Website" 
        class='businessSpecifics details' />    
</div>

【讨论】:

  • 嘿,谢谢你的代码!我真的很喜欢你的设计理念,但它不适合我当前表单的布局。
  • 制作 width:300px; 而不是 CSS 文件中 .block 类中的“160px”。这将为您提供准确的布局想要
【解决方案2】:

由于用户要求更改下拉菜单,我可以提供以下解决方案,每次更改下拉菜单选择时创建唯一控件:

DEMO FIDDLE

HTML

<select id="selectStores" >
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

JS

$(document).ready(function(){
$("#selectStores").change(function(){
   $('.businessSpecifics').remove();
    var number=$("#selectStores option:selected").text();
    var htmlToInsert="";
    for(var i=1;i<=number;i++)
    {
       htmlToInsert='<div class="businessSpecifics">'
    +'<label>URL Extension '+i+':</label>'
    +'<br> <input form="form'+i+'" type="text" name="urlExtension" placeholder="businessname" id="businessSpecificsURL" class="businessSpecifics details" />'
    +'<span>.byMyCompany.com</span>'
    +'<br><label>Login Email '+i+':</label>'
    +'<br><input form=form="form'+i+'" type="email" name="email" placeholder="email" id="businessSpecificsEmail" class="businessSpecifics details" />'
    +'<br><label>Password '+i+':</label>'
    +'<br><input form=form="form'+i+'" type="password" name="tempPswd" placeholder="" class="businessSpecificsdetails "/>'
    +'<br><label>Business Website '+i+':</label>'
    +'<br><input form=form="form'+i+'" type="text" name="bussinessWebsite" placeholder="Business Website" class="businessSpecifics details" />'
    +'</div><br/><br/>'; 
       $(htmlToInsert).insertAfter("#selectStores");
     }
});
});

UPDATED DEMO

【讨论】:

  • 您好,感谢您的帮助!我喜欢下拉菜单的想法。我的输入(现在选择标签)和我要添加的 div 位于不同的引导选项卡上,所以我在选项卡 1 上选择我拥有的商店数量,点击下一步,转到选项卡 2,然后在该页面上查看相应的 div 数量.这会改变代码吗?我也是从 html 中删除原始 div 并仅将其添加到 jQuery 中吗?
  • @tiaNaturally.. 查看更新的演示,让我知道这是否是您想要的!选择数字后,转到 tab2,您可以在该选项卡中找到创建的 html!
  • 这是完美的。非常感谢您的帮助!
  • 最后一个问题..为什么在原来的小提琴中商店以降序 (3-2-1) 的顺序显示,但在更新后的小提琴中它们显示为升序 (1-2-3)?有什么变化?
  • 我发现 append 是升序的,而 insertAfter 是降序的……奇怪。
【解决方案3】:

在聚焦时,获取输入的值并附加克隆的元素:

$('#numberOfLocations').on('focusout', function() {
  var that = $(this);
  var val = that.val(); 
  for (i=1;i<=val;i++) {
    var c = $('.businessSpecifics').not('.cloned').clone().addClass('cloned');  
    $('#blockHolder').append(c);
  }
});
.businessSpecifics:not(.cloned) {  
  display: none;
 }

.businessSpecifics.cloned { 
  border: 1px solid #d8d8d8;
  padding: 10px;
}

#blockHolder {
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input form='form1' type='number' name='numberOfLocations' id='numberOfLocations' size="2" maxlength="2" />
<div id="blockHolder" />
<div class='businessSpecifics'>
                    <label>URL Extension:</label>
                    <br>
                    <input form='form1' type='text' name='urlExtension' placeholder="businessname" id='businessSpecificsURL' class='businessSpecifics details' /><span>.byMyCompany.com</span>
                    <br>
                    <label>Login Email:</label>
                    <br>
                    <input form='form1' type='email' name='email' placeholder='email' id='businessSpecificsEmail' class='businessSpecifics details' />
                    <br>
                    <label>Password:</label>
                    <br>
                    <input form='form1' type='password' name='tempPswd' placeholder="" class='businessSpecifics details' />
                    <br>
                    <label>Business Website:</label>
                    <br>
                    <input form='form1' type='text' name='bussinessWebsite' placeholder="Business Website" class='businessSpecifics details' />

                </div>

【讨论】:

  • 我认为给她输入代码并不能真正帮助她学习。请添加解释并将她指向文档:)
猜你喜欢
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2017-05-18
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多