1

シンプルなクローンプラグインを使用しています。これはそのプラグインのgithub ページです。

今のところ、次のような入力名を生成します

user[projects][0][name]
user[projects][1][name]
user[projects][2][name]

のような名前を生成する方法を誰か教えてもらえますか

user[projects_name][0][1]
user[projects_name][1][1]
user[projects_name][2][1]

jsfiddleデモを表示するために作成しました。

http://jsfiddle.net/Viruthagiri/YLSdQ/1/

これがidを生成する関数だと思います。

// append a initial number to elements id, if options[:nested] true, also assign a initial number to the element name
  e.find("input, select").each(function(){
    var old_id = $(this).attr("id");
    $(this).attr("id", old_id+'_0');
    if(option.nested == true) {
      var old_name = $(this).attr("name");
      var reg = /\[\w*\]$/;
      var match = reg.exec(old_name);
      var new_name = old_name.substr(0, match.index) + "[0]" + match[0];
      $(this).attr("name", new_name);
    }
  })
$.fn.regenerate_names = function(number){
    $(this).find("input, select").each(function(){
      var old_name = $(this).attr("name");
      var old_number = old_name.match(/.*\[(\d+)\]/)[1];  // find the last match
      var old_number_index = old_name.lastIndexOf(old_number);
      var new_name = old_name.substring(0,old_number_index) + number + old_name.substring(old_number_index+1);
      $(this).attr("name", new_name);
    });
  };

ここに完全なソースコードがあります

4

1 に答える 1

2

プラグイン作者のpake007です。あなたの要件をサポートするためにプラグインを更新しました。github で simple-clone の最新バージョンを複製してください。質問については、次のコードを試すことができると思います。

<div class='project_group'>
  <input id="user_projects_name" name="user[projects_name][1]" type="text" /> 
</div>

$(".project_group").simple_clone({
  label: "Project Name ",
  label_colon: true,
  nested: true,
  start: 1
});

新しいオプション "start" は、入力名の最初の配列インデックスの開始を設定するために使用されます。デフォルトは 0 です。

上記のコードは、次のような入力名を生成します。

user[projects_name][1][1]
user[projects_name][2][1]
user[projects_name][3][1]
于 2013-01-30T06:49:20.543 に答える