Reputation: 1068
I would like to have two textbox whenever i click on addtextboxes button, I am using this code to generate single textbox and it works fine.
<script type="text/javascript">
$(document).ready(function () {
var counter = 1;
$("#addButton").click(function () {
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>answer_' + counter + ' : </label>' + '<input type="text" name="answer_' + counter + '" id="answer_' + counter + '" value="" >');
newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
});
});
</script>
<div id='TextBoxesGroup'>
<div id="TextBoxDiv1">
<label>answer #1 : </label><input type='textbox' id='answer1' >
</div>
</div>
here i would like to know how can i have two textboxes when i click on addbutton ? any help would be appreciated.
Upvotes: 0
Views: 351
Reputation: 15112
$("#addButton").click(function () {
var counter = 1;
for (var i=0;i <= counter;i++)
{
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + i);
newTextBoxDiv.after().html('<label>answer_'+ i + ' : </label>' + '<input type="text" name="answer_' + i + '" id="answer_' + i + '" value="" >' );
newTextBoxDiv.appendTo("#TextBoxesGroup");
}
});
If you want more textboxes
. increase you counter
value
.
Upvotes: 1
Reputation: 29549
By taking the inner workings of your click event and putting it into it's own function, you can do something like the following:
HTML
<button id="addButton">Add</button>
<div id='TextBoxesGroup'></div>
JavaScript
var counter = 1;
var labelArray = ["answer", "order"];
$("#addButton").click(function () {
for(var i = 0; i < labelArray.length; i++){
createNewInput(labelArray[i]);
}
counter++;
});
function createNewInput(label){
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>'+ label + " " + counter + ' : </label>' + '<input type="text" name="answer_' + counter + '" id="answer_' + counter + '" value="" >' );
newTextBoxDiv.appendTo("#TextBoxesGroup");
}
Upvotes: 0
Reputation: 752
Try this:
$(document).ready(function(){
var counter = 1;
$("#addButton").click(function () {
var clone1 = $("#TextBoxDiv1").clone();
clone1.children('input').attr('id',"answer_"+counter) ;
clone1.children('input').attr('name',"answer_"+counter);
$("#TextBoxesGroup").append(clone1);
counter++;
var clone2 = $("#TextBoxDiv1").clone();
clone2.children('input').attr('id',"answer_"+counter) ;
clone2.children('input').attr('name',"answer_"+counter);
$("#TextBoxesGroup").append(clone2);
});
});
Upvotes: 0
Reputation: 10378
$(document).ready(function () {
var counter = 1;
$("#addButton").click(function () {
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
var $html = '<label>answer_' + counter + ' : </label>' + '<input type="text" name="answer_' + counter + '" id="answer_' + counter + '" value="" >';
counter++;
$html += '<label>answer_' + counter + ' : </label>' + '<input type="text" name="answer_' + counter + '" id="answer_' + counter + '" value="" >';
counter++;
newTextBoxDiv.after().html($html);
newTextBoxDiv.appendTo("#TextBoxesGroup");
});
});
Upvotes: 0
Reputation: 121998
Use a for loop for two times and move your code inside the loop.
for (var i=0 ;i<=counter ;i++){
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + i);
newTextBoxDiv.after().html('<label>answer_'+ i+ ' : </label>' + '<input type="text" name="answer_' + counter + '" id="answer_' + i+ '" value="" >' );
newTextBoxDiv.appendTo("#TextBoxesGroup");
});
}
Upvotes: 1