更改名称属性的一部分

elv*_*vis 2 jquery

如何使用jQuery仅更改name属性的一部分?

例如,如果我有:

<input type="text" name="Sometext[1]">
Run Code Online (Sandbox Code Playgroud)

如何让jQuery更改Sometext[1]Sometext[2],然后Sometext[3]等等.我有动态表单字段,我需要每个name属性都是唯一的.

Cyr*_* N. 5

你可以这样做:

var i = 0;

$('input').each(function () {
   $(this).attr('name', 'Sometext[' + i + ']');
   i++;
});
Run Code Online (Sandbox Code Playgroud)

假设你知道"Sometext"!如果你不知道,你必须猜测它:

var i = 0;

$('input').each(function () {
   var input_name = $(this).attr('name').substring(0, $(this).attr('name').indexOf('['));
   $(this).attr('name', input_name + '[' + i + ']');
   i++;
});
Run Code Online (Sandbox Code Playgroud)

现在,通过在新名称出现时重置索引:

var i = 0;
var input_name = null;

$('input').each(function () {

   var new_input_name = $(this).attr('name').substring(0, $(this).attr('name').indexOf('[');

   if (input_name !== new_input_name) {
       input_name = new_input_name;
       i = 0;
   }

   $(this).attr('name', input_name + '[' + i + ']');
   i++;
});
Run Code Online (Sandbox Code Playgroud)