【问题标题】:Get value from select and clone form number of times从选择和克隆表单中获取值的次数
【发布时间】:2017-09-12 01:14:48
【问题描述】:

我有一个选择框,我希望用户选择值,然后在获取值后根据所选值将表单添加到页面中,例如如果用户选择“1”,则添加 1 个表单,如果用户选择“ 10" 10 个表格。同样,如果没有给出或未选择任何形式,则不会显示。这似乎是我的 js 中的问题,它确实添加了表单,但也添加了其他更多我没想到的表单。

<div class="form-group">
                                        <label>Number of travellers</label>
                                        <select class="form-control" id="travellersNumber">
                                            <option value="0">Select Numbers Of Travellers</option>
                                            <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>
                                            <option value="6">6</option>
                                            <option value="7">7</option>
                                            <option value="8">8</option>
                                            <option value="9">9</option>
                                            <option value="10">10</option>
                                        </select>
                                    </div>

<div class=bookForm>

<div class=col-xs-12>

<h3 class=bookForm-heading>Submit your details</h3>

</div>

<div class="col-xs-12 col-md-3">

<div class=form-group>

<label>First Name</label>

<input class=form-control name=firstName>

</div>
</div>
</div>

.bookForm{
    display:none;
  }

function bookFormToggle(){
    var traveller = $("#travellersNumber");
    var form = $(".bookForm");
    var heading = $('.bookForm-heading');
    function unhideForm(){
        var travellerValue = parseInt(traveller.val());
        for(i=0;i<travellerValue;i++){
                heading = heading.html('Traveller '+ (i+1) +' Information');
                form.clone().insertAfter(form);
        }
    }
    traveller.on("change",unhideForm);
    unhideForm();
}
bookFormToggle();

【问题讨论】:

    标签: javascript jquery html css forms


    【解决方案1】:

    希望这是你想要的。

    $(function () {
    	$("#travellersNumber").on('change', function () {
    		var traveller = $(this);
    		var form = $("#original");
    		var heading = $('.bookForm-heading');
    		var travellerValue = parseInt(traveller.val());
    		$("#original").hide();
    
    		$("[id*='original_']").not("#original").remove(); //Remove all forms except original form
    
    		for (i = 0; i < travellerValue; i++) {
    			if (i == 0) {
    				heading = heading.html('Traveller 1 Information');
    				$("#original").show();
    			}
    			else
    			{
    				var cloneDiv = form.clone().prop("id", "original_" + i).appendTo("#travellersDetail");
    				cloneDiv.find(".bookForm-heading").html('Traveller ' + (i + 1) + ' Information');
    			}
    		   
    		}
    	});
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <style>
    	.bookForm {
    		display: none;
    	}
    </style>
    
    <div class="form-group">
    	<label>Number of travellers</label>
    	<select class="form-control" id="travellersNumber">
    		<option value="0">Select Numbers Of Travellers</option>
    		<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>
    		<option value="6">6</option>
    		<option value="7">7</option>
    		<option value="8">8</option>
    		<option value="9">9</option>
    		<option value="10">10</option>
    	</select>
    </div>
    
    <div class="bookForm" id="original">
    	<div class=col-xs-12>
    		<h3 class="bookForm-heading">Submit your details</h3>
    	</div>
    	<div class="col-xs-12 col-md-3">
    		<div class=form-group>
    			<label>First Name</label>
    			<input class=form-control name=firstName>
    		</div>
    	</div>
    </div>
    
    <div id="travellersDetail"></div>

    【讨论】:

      【解决方案2】:

      问题是您没有删除已添加的旧表单。

      $(document).ready(function(){
        var traveller = $('select[name="trav"]');
        traveller.change(function(){
          $('.bookForm').not('.bookForm:first').remove();
          var travellerValue = traveller.val();
          var form = $('.bookForm:first');
          for(i=travellerValue;i>1;i--){
            var newAdd = form.clone().insertAfter(form);
            newAdd.find('.bookForm-heading').html('Traveller'+ (i)+' Information');
          }
          $('.bookForm').show();
        });
      });
      .bookForm{
        background-color:green;
        padding:5px;
        margin:5px;
      }
      #travellersNumber{
        width:150px;
      }
      <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      
      <div class="form-group">
        <label>Number of travellers</label>
        <select class="form-control" id="travellersNumber" name="trav">
          <option value="0">Select Numbers Of Travellers</option>
          <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>
          <option value="6">6</option>
          <option value="7">7</option>
          <option value="8">8</option>
          <option value="9">9</option>
          <option value="10">10</option>
        </select>
      </div>
      <div class="bookForm row">
        <div class="col-xs-12">
          <h3 class="bookForm-heading">Submit your details</h3>
        </div>
        <div class="col-xs-12">
          <div class="form-group">
            <label>First Name</label>
            <input class="form-control" name="firstName">
          </div>
        </div>
      </div>

      【讨论】:

        【解决方案3】:
        <select id='populate' onchange='populate();'></select>
        <div id='myform'></div>
        
        function populate()
        {
        var forms=$("#populate").val();
        if (forms!=0)
        {
        var formelements='';
        for (i=1; i<=forms; i++)
        {
        var formelements .= "<div class=bookForm>" +i+ "</div>";
        }
        $("#myform").html(formelements);
        }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-08
          • 1970-01-01
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-01
          相关资源
          最近更新 更多