Index-Id对于每个输入始终具有相同的值

时间:2015-07-14 15:06:51

标签: javascript jquery

所以我有动态创建的表单,我希望获得某些输入的index-id,其名称类似于championSpell []我需要知道哪一个是哪个,所以我想使用index-id但是它将每个输入索引更改为按下添加拼写按钮时的值相同。您可以在此处http://89.69.172.125/test.php

测试问题
$(function() {

             $('body').on('click', '#addSpell',function() { 

                  $(
                   '<p><select name="change[]" id="change[]" onchange="val(this)"><option value="Passive">Passive</option><option value="Q" selected>Q</option><option value="W">W</option><option value="E">E</option><option value="R">R</option></select><label for="var"><input type="text" id="championSpell[]" name="championSpell[]" data-id="" readOnly="true"><br><textarea type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Enter Description" /><select><option value="buff">Buff</option><option value="nerf">Nerf</option><option value="new">New</option><option value="change">Change</option><option value="bugfix">Bugfix</option></select></label> <a href="#" id="addGeneral">Add Change</a> <a href="#" id="remVar">Remove Spell</a></p>').appendTo($(this).next());
                     $('input[name="championSpell[]"]').attr('data-id', y);
                    y++;
                    return false;
            });
});

2 个答案:

答案 0 :(得分:0)

在你的代码 $(&#39;输入[name =&#34; championSpell []&#34;]&#39;)。attr(&#39; data-id&#39;, y); 这将改变所有输入data-id。因此,而不是直接添加其数据ID。 与 data-id =&#34;&#39; + y +&#39;&#34;

一样

我已更新您的代码。

请尝试这个代码

$(function() {

             $('body').on('click', '#addSpell',function() { 
                  var championdataid = $('input[id="champion[]"]').attr('data-id');
                  $(
                   '<p><select name="change[]" id="change[]" onchange="val(this)"><option value="Passive">Passive</option><option value="Q" selected>Q</option><option value="W">W</option><option value="E">E</option><option value="R">R</option></select><label for="var"><input type="text" id="championSpell[]" name="championSpell[]" data-id="'+y+championdataid +'" readOnly="true"><br><textarea type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Enter Description" /><select><option value="buff">Buff</option><option value="nerf">Nerf</option><option value="new">New</option><option value="change">Change</option><option value="bugfix">Bugfix</option></select></label> <a href="#" id="addGeneral">Add Change</a> <a href="#" id="remVar">Remove Spell</a></p>').appendTo($(this).next());
                     //$('input[name="championSpell[]"]').attr('data-id', y);
                    y++;
                    return false;
            });
});

答案 1 :(得分:0)

不好的做法

(例如,使用标签作为块元素)

(使用jquery创建这样的模板文件)

(等)

(等)

问题在于变量$(function () { var y = 0; $('#addSpell').on('click', function(){ $(['<p>', '<select name="change[]" id="change[]" onchange="val(this)">', '<option value="Passive">Passive</option>', '<option value="Q" selected>Q</option>', '<option value="W">W</option>', '<option value="E">E</option>', '<option value="R">R</option>', '</select>', '<label for="var">', '<input type="text" id="championSpell[]" name="championSpell[]" data-id="' + y +'" readOnly="true">', '<br>', '<textarea type="text" id="p_scnt" size="20" name="p_scnt_' + y + '" value="" placeholder="Enter Description">', '<select>','' + '<option value="buff">Buff</option>', '<option value="nerf">Nerf</option>', '<option value="new">New</option>', '<option value="change">Change</option>', '<option value="bugfix">Bugfix</option>', '</select>', '</label>', '<a href="#" id="addGeneral">Add Change</a>', '<a href="#" id="remVar">Remove Spell</a>', '</p>'].join('')).appendTo($(this).next()); y++; return false; }); }); 未初始化,并且最后更改了所有data-id值。尝试更新(并且更具可读性)位

#logout_link {
  margin-right:0;
  text-align:right;
  float:right;
}

#centered { 
  text-align:center;
}