2011-09-21 78 views
0

投入要素和表行的新行我有以下代码:添加使用JQuery

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#add, .check ").click(function() { 
      $('#mytable tbody>tr:last').clone(true).insertAfter('#mytable tbody>tr:last'); 
      return false; 
     }); 
    }); 
</script> 

随着由身体下面:

<form action='demo.php' method='post'> 
<a id="add">+</a></td> 
    <table id="mytable" width="300" border="1" cellspacing="0" cellpadding="2"> 
    <tbody> 
    <tr> 
     <td>Name</td> 
    </tr> 
    <tr class="person"> 
     <td><input type="text" name="name[]" class='check' /></td> 
    </tr> 
    </tbody> 
    </table> 
    <input type='submit' /> 
</form> 

我怎样才能得到它清除场添加它们后,可能会添加一个效果,如淡入或向下滑动等等。另外,我希望如果最后一行中的任何表单元素被聚焦,它会自动添加一个新行,但无法弄清楚如何访问最后一行的表单元素...:\

+0

我已经降落在这个页面上,同时寻找一种方式来添加一个表格,已经存在的表格。我怀疑你的标题不完全准确,看来你的表单已经存在没有jQuery。这是真的?如果是这样,你会考虑改变标题吗? – Tass

回答

0

您可以使用像这样的查找遍历新值。看看这个fiddle

$("#add, .check ").click(function() { 
$('#mytable tbody>tr:last') 
    .clone(true) 
    .insertAfter('#mytable tbody>tr:last').find('input').each(function(){ 
     $(this).val(''); 
    }); 
}); 

如果你想在新行出现在最后一排的焦点,你必须委托集中在最后一排的第一个输入。你想使用委托,因为行是动态添加的。插入克隆行后,您还可以添加淡入淡出效果。这里是一个fiddle for this

$("#mytable").delegate(' tbody>tr:last input:first','focus',function(){ 
    $('#mytable tbody>tr:last') 
    .clone(true) 
    .insertAfter('#mytable tbody>tr:last').hide().fadeIn().find('input').each(function(){ 
     $(this).val(''); 
    }); 
}); 
+0

但似乎并非所有的时间(我使用FireFox 3.6)。它开始似乎中断,但它不会引发错误,并防止'$('#add')'也起作用。 –

+0

淡入淡出效果需要在执行新行之前完成。如果你选择得太快,它会克隆/绑定有趣和破坏。你可以修改它不这样做,例如只有当行已经淡入时绑定焦点。这是一个没有效果的小提琴,它看起来像它的作品http://jsfiddle.net/zGe8W/3/ –