0

Nested Model Formに関する質問です。クラスのクリックボタンで新しいtextフィールドを追加したい。新しく生成されたフィールドは、同じクラス名で異なる ID です。私の問題は次のとおりです。新しいフィールドのクラス「.add_fields」のボタンをクリックしている間、日付ピッカーが表示されません。私のcoffeescriptコードは次のとおりです。date-picker.add_fields

$('form').on 'click', '.add_fields', (event) ->
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()
4

2 に答える 2

2

あなたの内容はわかりませんdata('fields')。そこにテキストフィールドがあるはずですよね?

新しい DOM 要素を挿入した後data('fields')、datepicker を初期化する必要があります。

$(this).before($(this).data('fields').replace(regexp, time)).find('.date-picker').datepicker()

PS:$(this).before(content)戻る$(this)かどうかは$(content)わかりません (jQuery ドキュメントでは説明されていません)。を調整する必要があるかもしれませんfind

于 2013-06-13T07:47:01.663 に答える
1

ボタンをクリックするとDOMに新しいフィールドが追加されますが、新しく追加されたフィールドには同じクラスがありますが、DOMに追加される前にdatepickerがそのクラス要素に添付されていたため、datepickerが添付されていません。

動的に追加されたフィールドに日付ピッカーをアタッチするには、最初にそれを削除してから再度アタッチする必要があります。たとえば、クラスを持つフィールドdatepickerがあり、JavaScript コードを次のように変更する必要がある場合:

$('form').on 'click', '.add_fields', (event) ->
  time = new Date().getTime()
  regexp = new RegExp($(this).data('id'), 'g')
  $(this).before($(this).data('fields').replace(regexp, time))

  //remove the hasDatepicker class from the fields and re-intialise datepicker.
  $('.datepicker').removeClass('hasDatepicker').datepicker({dateFormat: 'yy/mm/dd'})
  event.preventDefault()
于 2013-06-13T07:45:28.853 に答える