我从这个标记开始:
<div>
<span>
<label for="Item[0]">Item #1</label>
<input type="text" value="" name="Item" id="Item[0]"/>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
在每个按钮上单击我想要添加另一个完全相同的部分,但增加索引.
<div>
<span>
<label for="Item[0]">Item #1</label>
<input type="text" value="" name="Item" id="Item[0]"/>
</span>
</div>
<div>
<span>
<label for="Item[1]">Item #2</label>
<input type="text" value="" name="Item" id="Item[1]"/>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用这个javascript:
$(document).ready(function(){
var count = <%= Items.Count - 1 %>;
$('#AddItem').click(function(e) {
e.preventDefault();
count++;
var tb = $('#Item[0]').clone().attr('id', 'Item[' + count + ']');
var label = document.createElement('label')
label.setAttribute('For', 'Item[' + count + ']')
$('#ItemFields').append(label);
$('#ItemFields').append(tb);
});
});
Run Code Online (Sandbox Code Playgroud)
所以有几个问题:
附加标签有效,但我的克隆文本框没有.
标签没有文字.我似乎找不到那个属性.谁能告诉我它是什么?
我无法弄清楚如何在div和span中将标签和文本框包装在一起.如果我试试
$('#ItemFields').append('<div><span>' + label + tb + '</span></div>');
Run Code Online (Sandbox Code Playgroud)
它输出[object HTMLLabelElement]而不是实际标签.如果我尝试将它们分成多个append语句,它会自行终止div和span.我是jQuery/Javascript的新手,所以我不太确定我做错了什么.
我想我会找到一种方法从标记中的现有数字中提取下一个数字,而不是依赖于保持变量同步.此外,我认为您只需要正确嵌套您的附件以获得您想要的收容.
$(document).ready(function(){
$('#AddItem').click(function(e) {
var count = $('[name=Item]:last').attr('id').replace(/Item\[/,'').replace(/\]/,'');
count = Number(count) + 1;
var newItemID = 'Item[' + count + ']';
var tb = $('#Item[0]').clone();
tb.attr('id', newItemID );
var label = $('<label for="' + newItemID + '">Item #' + count + '</label>');
var container = $('<div></div>');
$('<span></span>').append(label)
.append(tb)
.appendTo(container);
$('#ItemFields').append(container);
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
小智 3
克隆整个块(但添加一个项目类)的示例,因为我认为它对于未来更加强大(如果您更改项目的 html,例如)并处理标签的文本:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Demo</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#AddItem').click(function(e) {
e.preventDefault();
var count = $('.item').length;
var id = 'Item[' + count + ']';
var item = $('.item:first').clone();
item.find('input:first').attr('id', id);
item.find('label:first').attr('for', id)
.html('Item #' + (1+count));
item.appendTo('#ItemFields');
});
});
</script>
</head>
<body>
<input type="button" id="AddItem" value="Add" />
<div id="ItemFields">
<div class="item">
<span>
<label for="Item[0]">Item #1</label>
<input type="text" value="" name="Item" id="Item[0]"/>
</span>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41885 次 |
| 最近记录: |