2012-08-01 105 views
0

所以,我在这里要做的是onClick添加另一个<li>,它完全像它上面那个。我已经在PHP中创建了一个for循环来在这个<li>中创建适当的字段。jQuery添加新字段

我正在运行的问题是:当您单击.repatable-add按钮时,我得到两次“替换前”警报,“替换后”警报根本不会触发。 和想法?

jQuery('.repeatable-add').click(function() { 
    field = jQuery(this).siblings('ul.image-details').find('li:last').clone(true); 
    fieldLocation = jQuery(this).siblings('ul.image-details').find('li:last'); 
    jQuery('input', field).val('').attr('name', function(index, name) { 
      alert(name +' before replace'); 
      return name.replace(/(\d+)/, function(fullMatch, n) { 
      return Number(n) + 1; 
      alert(name +' after replace'); 
     }); 
    }) 
    field.insertAfter(fieldLocation, jQuery(this).siblings('ul.image-details').find('li:last')) 
    return false; 
}); 

回答

0

我在这个地方发布了这个答案,不知道发生了什么事。

这是因为你在返回后试图做出警报,所以它不会触发。

我不知道你正在尝试与输入的东西做什么,但这里是我想出了一个解决方案:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery('.repeatable-add').click(function(){ 
      var copyThis = jQuery(".image-details").find("li:last").attr('outerHTML'); 
      jQuery(".image-details").append(copyThis); 
      var name = jQuery("input").attr("name"); 
      var count = name.replace(/\D+/, ''); 
      var newCount = count++; 
      jQuery("input").attr("name",name.replace(newCount.toString(),count.toString())); 
     return false; 
    }); 
}); 
</script> 

<ul class="image-details"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
</ul> 
<input name="ithas1" /> 
<button class='repeatable-add'>button</button>