0

プロジェクト フォーム内で、ユーザーは特定のタスクを複製できます。これは正常に機能しています。コピーしたタスクのインデックス ID (タイム スタンプ) を新しいタイム スタンプに置き換える必要があります。私の現在のコードは、単一の div のみを置き換えます。

すべてのフォーム入力/ラベル フィールド ID をタイムスタンプに置き換えるにはどうすればよいですか? 私は現在 find() を実行してから置き換えます。

どんなアイデアでも大歓迎です!

$(function() {
  $('form').on('click', '.clone-task', function(event) {
    event.preventDefault();
    var time = new Date().getTime();
    var taskCopy = $(this).parents(".dupForm").clone();
    $("#dupTask").append(workoutCopy);
    var attributes = taskCopy.find('input').attr('name').replace(/\[\d+]/g, time);
      alert(attributes);
    });
 });

タスクフォーム (ruby-on-rails):

 <fieldset>
 <div class="field">
 <b><%= f.label :name, "Major Task" %></b> | 
 <%= f.text_field :name, :placeholder => "task name" %>
 <%= f.hidden_field :_destroy %>
 <%= link_to "remove", '#', class: "remove_fields" %>
 </div>

 <div class="field">
 <%= f.label :time_start, "Scheduled Time" %><br />
 <%= f.time_select :time_start, {:ampm => true, :minute_step => 15} %>
 </div>
 <div class="field">
 <%= f.label :task_duration, "Task Duration(mins)" %>
 <%= f.number_field :task_duration, size: 3 %>
 </div>
 <b>Add Supporting Actions to Your Task</b> 
 <%= f.fields_for :activities do |builder| -%>
 <%= render 'activity_fields', f: builder %>
 <% end %>
 </div>
 <%= link_to_add_fields "Add Action", f, :activities %>
 </fieldset> 
4

1 に答える 1

0

jQueryattr()メソッドを使用すると、一致したすべての要素を処理するループとして機能する関数を引数として使用できます。

taskCopy.find('input').attr('name', function( idx, name){
    return name.replace(/\[\d+]/g, time);
});

API リファレンス: http://api.jquery.com/attr/

于 2012-10-09T23:48:57.553 に答える