我试图选择按下“添加信息”按钮时添加的输入字段。
现在,当按下“删除”时,第一个输入字段将被删除,它应该是添加的输入字段:http://jsfiddle.net/gDChA/14/
jQuery:
function findLastInput ( element ) {
return $( element ).parent().prev().find('input').last();
}
$('button.add').click ( function(e) {
$(this).parent().find('button.remove').show();
$(this).hide();
var element = findLastInput(this).clone();
var name = element.prop('name');
var pattern = new RegExp(/\[(.*?)\]/);
var info = name.match(pattern)[1];
element.prop({
'value': '',
'name' : name.replace(pattern, '[' + info + 'info' + ']'),
'id' : element.prop('id') + 'info',
'type' : 'input'
});
$(this).closest('.button-row').append(element);
})
$('button.remove').click ( function(e) {
$(this).parent().find('button.add').show();
$(this).hide();
findLastInput(this).remove('input');
});
正是这个选择器是错误的:
findLastInput(this).remove('input');
HTML:
<div class="input string optional"><label for="virksomhed_navn" class="string optional"> Navn</label><input type="text" size="50" name="virksomhed[navn]" maxlength="255" id="virksomhed_navn" class="string optional"></div>
<div class="button-row" style="font-size: 11px; width: 110px; float: right; margin-top: -10px; margin-right: 16px;">
<button class="add" style="font-size: 11px;">Add info</button>
<button class="remove" style="font-size: 11px;">Remove</button>
</div>
<div class="input string optional"><label for="virksomhed_name" class="string optional">Name</label><input type="text" size="50" name="virksomhed[name]" maxlength="255" id="virksomhed_name" class="string optional"></div>
<div class="button-row" style="font-size: 11px; width: 110px; float: right; margin-top: -10px; margin-right: 16px;">
<button class="add" style="font-size: 11px;">Add info</button>
<button class="remove" style="font-size: 11px;">Remove</button>
</div>
<div class="input string optional"><label for="virksomhed_pis" class="string optional">Pis</label><input type="text" size="50" name="virksomhed[v]" maxlength="255" id="virksomhed_pis" class="string optional"></div>
<div class="button-row" style="font-size: 11px; width: 110px; float: right; margin-top: -10px; margin-right: 16px;">
<button class="add" style="font-size: 11px;">Add info</button>
<button class="remove" style="font-size: 11px;">Remove</button>
</div>
最佳答案
$(this).closest('.button-row').append(element);
这行将新的输入字段添加到div.button-row
而不是div.input
。因此,当您删除div.input
中的最后一个输入时,第一个也是唯一的输入字段将被删除,而新的字段保留在div.button-row
中。
编辑:刚注意到您说您想要在另一个注释中输入。在这种情况下,您需要更新删除输入的零件。
若要选择输入字段,请使用focus方法。请记住,该字段必须在文档中,可见且已启用(即可以选择)
因此,您只需要更改每个函数的最后一行:
$('button.add').click ( function(e) {
$(this).parent().find('button.remove').show();
$(this).hide();
var element = findLastInput(this).clone();
var name = element.prop('name');
var pattern = new RegExp(/\[(.*?)\]/);
var info = name.match(pattern)[1];
element.prop({
'value': '',
'name' : name.replace(pattern, '[' + info + 'info' + ']'),
'id' : element.prop('id') + 'info',
'type' : 'input'
});
$(this).closest('.button-row').append(element);
element.focus();
})
$('button.remove').click ( function(e) {
$(this).parent().find('button.add').show();
$(this).hide();
$(this).closest('.button-row').find('input').remove();
});