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;                      }); 

demo 2


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -