【问题标题】:Issue with incremental numbers to create unique names in cloned elements在克隆元素中创建唯一名称的增量数字问题
【发布时间】:2014-04-06 21:04:11
【问题描述】:

Onclick 我正在克隆复选框,因此客户可以根据需要订购原始报价。我现在有两个问题:

1) 为原始名称添加唯一编号。它现在的工作方式:

我得到了这个 a_1、a_12、a_123 等。

而不是这个 a_1、a_2、a_3 等。

2) 另一个问题是文本框“b”的增量不是从 1 开始,而是前一个 (a) 结束的地方。我希望它从一个开始。

感谢您的帮助,这是我的代码:

c = 0;
$('input[type="checkbox"]').change(function(){
var currentNameAttr = $(this).attr('name'); 
var newNameAttr = (currentNameAttr+(++c))
var cloned;
if($(this).is(':checked')) {
$(this).parent().parent().parent().clone(true).insertAfter(this)
$(this).prop('checked', false)
$(this).attr('name', newNameAttr)
}
}) 

【问题讨论】:

    标签: javascript auto-increment increment cloning


    【解决方案1】:

    这是因为这条线:var newNameAttr = (currentNameAttr+(++c))。发生的情况是它检查 currentNameAttr$(this).attr('name') 的内容并添加 c 。但是,您并没有删除最后一个 c,所以您需要做的是:

     c = 0;
     $('input[type="checkbox"]').change(function(){
          var baseName = "a_"; 
          var newNameAttr = baseName + c;
               c++;
          var cloned;
    
          if($(this).is(':checked')) {
               $(this).parent().parent().parent().clone(true).insertAfter(this)
               $(this).prop('checked', false)
               $(this).attr('name', newNameAttr)
          }
     }) 
    

    这样,它将始终将c(将是一个大于 0 的整数)添加到 baseName(将是“a_”或您设置的任何值)。每次执行此函数时,它都会增加 c,这样下次就不会分配相同的 id。

    【讨论】:

    • 感谢@Luxelin 它有效。虽然,我喜欢将键名保留在 NewNameAttr 中。我怎么能做到? (我的密钥名称对应于客户的产品 ID 编号)。
    • @user3371049 这些工作方式是否有基本格式?如,你能总是从最后删除所有数字吗?如果是这样,您可以使用正则表达式来获取除最后一部分之外的所有部分(除 # 之外的所有部分),然后添加一个新数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多