javascript - Reordering element names based on their position in parent with jquery -
<div class="content"> <div> <input type="text" name="newname[name]0"/> <div> <input type="text" name="newname[utility]0"/> <div> <textarea name="newname[text]0"></textarea> </div> </div> </div> <div> <input type="text" name="somename[name]1"/> <div> <input type="text" name="somename[utility]1"/> </div> <div> <textarea name="somename[text]1"></textarea> </div> </div> ... etc ... </div>
what's efficient way use jquery's selector reorder input elements (input, textarea) based on current position? ie, if user deletes newname[name]0
div parent element, somename[name]1
moved , should renamed somename[name]0
.
i think should along lines of:
$(".content").children().each( function(index, val) { val.find(":input").each(function(i, inputvalue) { // somehow extract current name of inputvalue , replace number index? }); });
you can try this:
$(".content :input").attr('name', function(i,oldattr){ return oldattr.split(']')[0] + "]" + i; });
suppose format of value of attribute name
consistent.
.attr()
demo.
in demo, try double-clicking input element remove it, use element inspector tool of browser view result.
if name
attribute has inconsistent format (there may possibility may contain more 1 ]
character) has index appended @ end, can try more reliable regex solution:
$(".content :input").attr('name', function(i,oldattr){ return oldattr.replace(/\d*$/,'') + i; });
Comments
Post a Comment