我有以下脚本,它在我的页面上为表单添加了一个额外的字段。我需要在生成时将焦点设置为新字段,但我不知道该怎么做。
HTML:
<input type="button" onclick="javascript:;" id="addRow" value="Add Field" style="margin-bottom: 10px;">
使用Javascript:
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j(function(){
var rows = 1;
$j('#addRow').click(function(){
$j('#nameRows').append('<div class="nameRow"><input type="text" name="names['+rows+'][name]" value="" /><a href="javascript:;" class="removeRow">Remove</a>');
rows++;
});
$j(document).on('click', '.removeRow', function(){
$j(this).closest('.nameRow').remove();
});
});
});
答案 0 :(得分:5)
$j('#addRow').click(function(){
$j('#nameRows').append('<div class="nameRow"><input type="text" name="names['+rows+'][name]" value="" /><a href="javascript:;" class="removeRow">Remove</a>');
$j("#nameRows input:last").focus();
rows++;
});
答案 1 :(得分:4)
由于您使用append()
,这意味着附加的元素将是最后一个。所以你可以使用:
$j('#nameRows :input:text:enabled:visible:last').focus();
完整的点击事件绑定如下所示:
$j('#addRow').click(function(){
$j('#nameRows').append('<div class="nameRow"><input type="text" name="names['+rows+'][name]" value="" /><a href="javascript:;" class="removeRow">Remove</a>');
$j('#nameRows :input:text:enabled:visible:last').focus();
rows++;
});
注意我添加了其他选择器来排除隐藏,禁用和非文本输入元素。 :input
作为选择器IMHO也优于input
。
HTH
答案 2 :(得分:1)
您可以附加元素并将焦点设置为一次性新添加的元素:
$j('#addRow').click(function(){
$j('#nameRows').append('<div class="nameRow"><input type="text" name="names['+rows+'][name]" value="" /><a href="javascript:;" class="removeRow">Remove</a>');
$('#nameRows input:last').focus();
rows++;
});
答案 3 :(得分:0)
只需引用新元素,并应用焦点方法:
$j(document).ready(function()
{
//$j(function(){ no need for a second ready callback inside the first...
var rows = 1;
$j('#addRow').click(function()
{
$j('#nameRows').append('<div class="nameRow"><input type="text" name="names['+rows+'][name]" value="" /><a href="javascript:;" class="removeRow">Remove</a>');
$k('#nameRows').find('input:last-child').focus();//<-----
rows++;
});
$j(document).on('click', '.removeRow', function()
{
$j(this).closest('.nameRow').remove();
});
});
这就是全部。您也可以使用document.createElement
,并将其分配给某个地方的变量,因此您也可以参考新创建的元素