Saya telah membuat kotak teks secara dinamis, dan saya ingin masing-masing dapat menampilkan kalender saat diklik. Kode yang saya gunakan adalah:
$(".datepicker_recurring_start" ).datepicker();
Yang hanya akan berfungsi pada kotak teks pertama, meskipun semua kotak teks saya memiliki kelas yang disebut datepicker_recurring_start.
Bantuan Anda sangat dihargai!
javascript
jquery
jquery-ui
datepicker
direndam
sumber
sumber
Jawaban:
inilah triknya:
DEMO
The
$('...selector..').on('..event..', '...another-selector...', ...callback...);
berarti sintaks:Tambah pendengar ke
...selector..
(yangbody
dalam contoh kita) untuk acara..event..
( 'fokus' dalam contoh kita). Untuk semua turunan dari node yang cocok yang cocok dengan selektor...another-selector...
(.datepicker_recurring_start
dalam contoh kita), terapkan event handler...callback...
(fungsi inline dalam contoh kita)Lihat http://api.jquery.com/on/ dan terutama bagian tentang "acara yang didelegasikan"
sumber
.datapicker()
setiap kali kotak teks mendapatkan fokus - jadi Anda ingin berhati-hati dengan pendekatan ini (dengan asumsi saya membaca ini dengan benar). Namun, saya pikir Anda akan baik-baik saja dengan.datapicker()
karena mungkin akan memeriksa apakah datepicker dibuat sebelum mencoba membuat ulang. Dengan kode lain Anda mungkin tidak memiliki rahmat ini. Selain itu, .on (hanya diperkenalkan di JQuery 1.7 - jadi pastikan Anda menggunakan versi yang benar.:not(.hasDatepicker)
Bagi saya di bawah ini jquery bekerja:
mengubah "body" menjadi document
Terima kasih untuk skafandri
Catatan: pastikan id Anda berbeda untuk setiap bidang
sumber
Jawaban luar biasa oleh skafandri +1
Ini baru saja diperbarui untuk memeriksa kelas hasDatepicker.
sumber
$('body').on('focus',".datepicker:not(.hasDatepicker)", function(){$(this).datepicker();});
?Pastikan elemen Anda dengan
.date-picker
kelas tersebut TIDAK memilikihasDatepicker
kelas. Jika ya, bahkan upaya untuk menginisialisasi ulang dengan$myDatepicker.datepicker();
akan gagal! Sebaliknya Anda perlu melakukan ...sumber
Anda perlu menjalankan
.datepicker();
lagi setelah Anda secara dinamis membuat elemen kotak teks lainnya.Saya akan merekomendasikan melakukannya dalam metode panggilan balik dari panggilan yang menambahkan elemen ke DOM.
Jadi katakanlah Anda menggunakan metode JQuery Load untuk menarik elemen dari sumber dan memuatnya ke DOM, Anda akan melakukan sesuatu seperti ini:
sumber
Metode baru untuk elemen dinamis adalah MutationsObserver .. Contoh berikut menggunakan underscore.js untuk menggunakan fungsi (_.each).
sumber
Inilah yang berhasil untuk saya (menggunakan jquery datepicker):
sumber
Tidak ada solusi lain yang berhasil untuk saya. Di aplikasi saya, saya menambahkan elemen rentang tanggal ke dokumen menggunakan jquery dan kemudian menerapkan datepicker padanya. Jadi tidak ada solusi acara yang berfungsi karena alasan tertentu.
Inilah yang akhirnya berhasil:
Semoga ini bisa membantu seseorang karena ini membuat saya sedikit mundur.
sumber
Anda dapat menambahkan kelas .datepicker dalam fungsi javascript, agar dapat secara dinamis mengubah jenis masukan
sumber
Saya telah mengubah jawaban @skafandri untuk menghindari penerapan ulang
datepicker
konstruktor ke semua input dengan.datepicker_recurring_start
kelas.Berikut HTML-nya:
Inilah JS:
inilah demo yang berfungsi
sumber
Inilah yang berhasil bagi saya di JQuery 1.3 dan ditampilkan pada klik / fokus pertama
ini membutuhkan masukan Anda memiliki kelas 'mostrar_calendario'
Live adalah untuk JQuery 1.3+ untuk versi yang lebih baru, Anda perlu menyesuaikannya dengan "on"
Lihat lebih lanjut tentang perbedaannya di sini http://api.jquery.com/live/
sumber
sumber