Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use Javascript to create dynamic input id

I want to use javascript to create <input/> tags with a dynamic id (name attribute will be the same) depending on the order in which they appear.

I have the first <input/> tag in plain html and a div that should append a new <input/> with an incremented id when clicked:

<input type="text" name="1" id="1" />
<div class="add_new" onClick="add_new_input()">+</div>

Now, the javascript needs to count the amount of <input/>s currently being displayed (count) and use that amount to generate a dynamic id (count+1).

Therefore if the <div class="add_new"><.. is clicked twice, the output should be as follows:

<input type="text" name="1" id="1" />
<input type="text" name="2" id="2" />
<input type="text" name="3" id="3" />

If I append the new <input/> tag in my form using jquery's append(), would this add to the previously appended <input/>s? Or would I need to append one <input/>, then two, then three, etc?

Also, how can I use javascript to count the amount of <input/>s currently being displayed?

like image 886
proPhet Avatar asked Nov 15 '13 05:11

proPhet


4 Answers

I had used script which is fit in your requirement .

Html:

<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>

<div id="p_scents">
    <p>
    <label for="p_scnts">
        <input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" />
    </label>
    </p>
</div>

Javascript :-

  $(function () {
    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;

    $('#addScnt').live('click', function () {
    $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
    i++;
    return false;
    });

    $('#remScnt').live('click', function () {
    if (i > 2) {
        $(this).parents('p').remove();
        i--;
    }
    return false;
    });
});

working demo

like image 125
Roopendra Avatar answered Nov 03 '22 21:11

Roopendra


Try like

function add_new_input() {
   var last_id = $('input[type="text"]:last').attr('id');
   last_id++;
   $('input[type="text"]:last').append('<input type="text" name="'+last_id+' id="'+last_id+'">');
}
like image 35
Gautam3164 Avatar answered Nov 03 '22 22:11

Gautam3164


Try this

function add_new_input(){
   var lastControlId = $('input:text:last').attr('id');
   if(!lastControlId){
    lastControlId = parseInt(lastControlId,10) + 1;
    $('#containerDiv').append('<input type="text" name="'+ lastControlId +' id="'+ lastControlId +'">');
  }
}
like image 1
Ravi Avatar answered Nov 03 '22 22:11

Ravi


WORKING FIDDLE

jQuery('#select').change(function () {
var val = jQuery(this).val();
var innerhtml = '';
for (var i = 0; i < val; i++) {
    innerhtml += "<input type='text' id='" + (i + 1) + "' name='" + (i + 1) + "'size=50>   </br>";
}
jQuery('#textbox_div').html(innerhtml);
});
like image 1
Sindhu Avatar answered Nov 03 '22 23:11

Sindhu