javascript - jQuery change number inside a name attribute -
i'm writing javascript clone table row containing form elements.
it's working far there's 1 piece can't quite figure out.
the element names have number increases every row.
e.g:
<table> <tbody> <tr> <td><input type="text" name="name[0][abc]" /></td> <td><button class="add-row-button">+</button></td> </tr> <tr> <td><input type="text" name="name[1][abc]" /></td> <td><button class="add-row-button">+</button></td> </tr> </tbody> </table>
i need cloned row update number. there multiple fields in each row need updated number can't include new name in jquery code. think has happen need name, use regex replace, update attribute.
here's current (simplified example) jquery:
// current num of elements. names 0 based number used // new name. var formrowcount = $('table tr').length; $('.add-row-button').click(function() { // clone last row. $(this).closest('tr').last().clone().insertafter($(this).closest('tr')); // set new field selector. var $newrow = $(this).closest('tr').next(); $newrow.find('input[type="text"]').val(''); formrowcount++; });
can point me in right direction. before formrowcount++;
need current element name , update number formrowcount
.
yeah, can use regex if want.
var formrowcount = $('table tr').length; $('.add-row-button').click(function() { // clone last row , insert it. $(this).closest('tr').last().clone().insertafter($(this).closest('tr')); // select input field var $newinput = $(this).closest('tr').next().find('input[type="text"]'); // update input value , name attribute var newname = $newinput.attr('name').replace(/^(name\[)\d+(\].+)$/, '$1' + formrowcount + '$2'); $newinput.val('').attr('name', newname); // update number formrowcount++; });
Comments
Post a Comment