Reputation: 487
I have following two select tags and I want to show input tag according to their values.
<select name="ticketId" id="myQty1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="ticketId" id="myQty2">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
So, I want three input tags if someone select one value from #myQty1
and two values from #myQty2
. my out put would be like below:
<!-- participate #1 -->
<input type="text" name="myQty1_parti1"/>
<!-- Participate #2 -->
<input type="text" name="myQty2_parti1"/>
<input type="text" name="myQty2_parti2"/>
So how can I show this?
Upvotes: 3
Views: 50
Reputation: 21489
You need to create target input when change event of select. In select onchange, iterate create of input equal to value of select.
$("#myQty1").change(function(){
$("#myQty1_result").empty();
for (var i = 1; i <= $(this).val(); i++){
$("#myQty1_result").append('<input type="text" name="myQty1_parti'+i+'"/>');
}
});
$("#myQty2").change(function(){
$("#myQty2_result").empty();
for (var i = 1; i <= $(this).val(); i++){
$("#myQty2_result").append('<input type="text" name="myQty2_parti'+i+'"/>');
}
});
#myQty1_result > input {
border: 1px solid blue;
}
#myQty2_result > input {
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="ticketId" id="myQty1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="ticketId" id="myQty2">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="myQty1_result"></div>
<div id="myQty2_result"></div>
You can make the code simple like bottom code:
$("select").change(function(){
$("#"+this.id+"_result").empty();
for (var i = 1; i <= $(this).val(); i++){
$("#"+this.id+"_result").append('<input type="text" name="'+this.id+'_parti'+i+'"/>');
}
});
Upvotes: 1