0

所以,我在这里要做的是onClick添加另一个<li>与上面完全相同的。我在 PHP 中创建了一个 for 循环,以在其中创建适当的字段<li>

我遇到的问题:当您单击.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;  
});  
4

3 回答 3

1

在警报之前有一个返回,所以警报永远不会被执行:

{  
            return Number(n) + 1;  
            alert(name +' after replace');
        });
于 2012-08-01T19:35:33.977 回答
1

好吧,“替换后”的警报根本不会触发,因为它之前有一个返回语句。

于 2012-08-01T19:35:55.893 回答
1

不完全确定您在使用该输入部分做什么,但我认为这是因为您在返回后尝试做一些事情。这是我所拥有的:

<script type="text/javascript">
jQuery(document).ready(function(){
    jQuery('.repeatable-add').click(function(){
            var copyThis = jQuery(".image-details").find("li:last").clone(true);
            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>
于 2012-08-01T19:55:30.037 回答