所以我有动态创建的表单,我希望获得某些输入的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;
});
});
答案 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;
}