Saya menggunakan pemilih tanggal jQuery untuk menampilkan kalender di seluruh aplikasi saya. Saya ingin tahu apakah saya bisa menggunakannya untuk menampilkan bulan dan tahun (Mei 2010) dan bukan kalender?
374
Saya menggunakan pemilih tanggal jQuery untuk menampilkan kalender di seluruh aplikasi saya. Saya ingin tahu apakah saya bisa menggunakannya untuk menampilkan bulan dan tahun (Mei 2010) dan bukan kalender?
Jawaban:
Berikut ini retasan (diperbarui dengan seluruh file .html):
EDIT jsfiddle untuk contoh di atas: http://jsfiddle.net/DBpJe/7755/
EDIT 2 Menambahkan nilai tahun tahun ke kotak input hanya pada mengklik tombol Selesai. Juga memungkinkan untuk menghapus nilai kotak input, yang tidak mungkin di bidang di atas http://jsfiddle.net/DBpJe/5103/
EDIT 3 memperbarui Solusi yang lebih baik berdasarkan solusi rexwolf ke bawah.
http://jsfiddle.net/DBpJe/5106
sumber
$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
#ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;}
Dan kemudian gunakan Javascript untuk memanipulasi perilaku:$("#ui-datepicker-div").addClass('noCalendar');
Ini kode bekerja sempurna dengan saya:
Output adalah:
sumber
@ Ben Koehler , itu prefek! Saya membuat sedikit modifikasi sehingga menggunakan satu instance dari pemilih tanggal lebih dari sekali berfungsi seperti yang diharapkan. Tanpa modifikasi ini, tanggal diuraikan secara salah dan tanggal yang dipilih sebelumnya tidak disorot.
sumber
Jawaban di atas cukup bagus. Satu-satunya keluhan saya adalah Anda tidak dapat menghapus nilainya setelah ditetapkan. Saya juga lebih suka pendekatan extended-jquery-like-a-plugin.
Ini berfungsi sempurna untuk saya:
Kemudian panggil seperti ini:
sumber
Ini akan menyelesaikan masalah =) Tapi saya ingin timeFormat yyyy-mm
Hanya mencoba di FF4 sekalipun
sumber
Saya memiliki kebutuhan yang sama hari ini dan menemukan ini di github, bekerja dengan jQueryUI dan memiliki pemilih bulan sebagai pengganti hari dalam kalender
https://github.com/thebrowser/jquery.ui.monthpicker
sumber
Inilah yang saya pikirkan. Ini menyembunyikan kalender tanpa perlu blok gaya tambahan dan menambahkan tombol yang jelas untuk menangani masalah tidak dapat menghapus nilai begitu Anda mengklik input. Juga berfungsi dengan baik dengan beberapa klik bulanan pada halaman yang sama.
HTML:
JavaScript:
sumber
Saya membutuhkan pemilih Bulan / Tahun untuk dua bidang (Dari & Ke) dan ketika satu dipilih, Max / Min ditetapkan pada yang lain ... a la memilih tanggal tiket pesawat. Saya mengalami masalah pengaturan max dan min ... tanggal di bidang lain akan terhapus. Berkat beberapa posting di atas ... Saya akhirnya menemukan jawabannya. Anda harus mengatur opsi dan tanggal dalam urutan yang sangat spesifik.
Lihat biola ini untuk solusi lengkapnya: Picker Bulan / Tahun @ JSFiddle
Kode:
Juga tambahkan ini ke blok gaya seperti yang disebutkan di atas:
sumber
Saya menggabungkan banyak jawaban bagus di atas dan sampai pada ini:
Ini terbukti berfungsi tetapi menghadapi banyak bug jadi saya terpaksa menambal di beberapa tempat datepicker:
patch1: di _showDatepicker: untuk menghaluskan kulit;
patch2: di _checkOffset: untuk memperbaiki posisi pemilih bulan (jika tidak, bidang di bagian bawah browser, pemeriksaan offset dimatikan);
patch3: di onClose of _hideDatepicker: jika tidak, ketika menutup bidang tanggal akan berkedip untuk waktu yang sangat singkat yang sangat mengganggu.
Saya tahu perbaikan saya masih jauh dari baik, tetapi untuk sekarang ini berfungsi. Semoga ini bisa membantu.
sumber
Tambahkan satu lagi solusi sederhana
http://jsfiddle.net/tmnasim/JLydp/
Fitur :
------------------------------------
solusi lain yang berfungsi baik untuk datepicker dan monthpicker di halaman yang sama: (juga hindari bug klik pada tombol sebelumnya di IE, yang mungkin terjadi jika kita menggunakan fungsi fokus)
JS fiddle link
sumber
Apakah hanya saya atau ini tidak berfungsi sebagaimana mestinya di IE (8)? Tanggal berubah ketika mengklik selesai, tetapi datepicker terbuka lagi, sampai Anda benar-benar mengklik suatu tempat di halaman untuk kehilangan fokus pada bidang input ...
Saya mencari solusi untuk ini.
sumber
Jika Anda mencari pemilih bulan, cobalah jquery.mtz.monthpicker ini
Ini bekerja dengan baik untuk saya.
sumber
Seperti banyak yang lain, saya telah menemui banyak masalah dalam mencoba melakukan ini, dan hanya kombinasi dari solusi yang diposting, dan akhirnya peretasan besar untuk membuatnya sempurna, telah memberikan saya solusi.
Masalah dengan solusi lain di utas ini yang telah saya coba:
Saya akhirnya menemukan cara untuk memperbaiki semua masalah ini . Empat yang pertama dapat diperbaiki hanya dengan berhati-hati tentang bagaimana Anda mereferensikan tanggal-dan penghapus bulan Anda dalam kode internal mereka, dan tentu saja melakukan beberapa pembaruan secara manual dari pemilih Anda. Ini bisa Anda lihat pada contoh-contoh di dekat bagian bawah. Masalah kelima dapat dibantu dengan menambahkan beberapa kode khusus ke fungsi datepicker.
CATATAN: Anda TIDAK perlu menggunakan skrip monthpicker berikut untuk memperbaiki tiga masalah pertama dalam datepicker normal Anda. Cukup gunakan skrip Instantiation datepicker di dekat bagian bawah posting ini.
Sekarang, untuk menggunakan monthpickers dan memperbaiki masalah terakhir, kita perlu memisahkan datepickers dan monthpickers. Kita bisa mendapatkan salah satu dari beberapa add-on monthpicker jQuery-UI di luar sana, tetapi beberapa kurangnya fleksibilitas / kemampuan pelokalan, beberapa kekurangan dukungan animasi ... jadi, apa yang harus dilakukan? Gulung "milikmu" dari kode-datepicker! Ini memberi Anda pembekal bulanan yang berfungsi penuh, dengan semua fungsi datepicker, hanya tanpa menampilkan hari.
Saya telah menyediakan skrip js Januari dan skrip CSS yang menyertainya , menggunakan metode yang dijelaskan di bawah ini, dengan kode jQuery-UI v1.11.1. Cukup salin cuplikan kode ini ke dua file baru, masing-masing monthpicker.js dan monthpicker.css.
Jika Anda ingin membaca tentang proses yang agak sederhana di mana saya mengubah datepicker menjadi monthpicker, gulir ke bawah ke bagian terakhir.
Sekarang untuk menambahkan datepicker dan monthpickers ke halaman!
Cuplikan kode-javascript berikut ini berfungsi dengan beberapa datepicker dan / atau monthpickers pada halaman, tanpa masalah yang disebutkan di atas! Diperbaiki secara umum dengan menggunakan '$ (ini).' banyak :)
Script pertama adalah untuk datepicker normal, dan yang kedua adalah untuk monthpickers "baru".
Keluar-berkomentar .after , yang memungkinkan Anda membuat beberapa elemen untuk menghapus input-bidang, dicuri dari jawaban Paul Richards'.
Saya menggunakan format "MMTT" di penjawab bulan saya, dan format "tttt-tttt" pada datepicker saya, tetapi ini sepenuhnya kompatibel dengan semua format , sehingga Anda bebas untuk menggunakan mana saja yang Anda inginkan. Cukup ubah opsi 'dateFormat'. Opsi standar 'showButtonPanel', 'showAnim', dan 'yearRange' tentu saja opsional dan dapat disesuaikan dengan keinginan Anda.
Menambahkan datepicker
Instansiasi datepicker. Yang ini berlangsung dari 90 tahun yang lalu dan hingga saat ini. Ini membantu Anda untuk menjaga input-bidang yang benar, terutama jika Anda mengatur opsi defaultDate, minDate dan maxDate, tetapi itu bisa menanganinya jika Anda tidak. Ini akan bekerja dengan dateFormat yang Anda pilih.
Menambahkan penjilat bulan
Sertakan file monthpicker.js dan file monthpicker.css di halaman yang Anda ingin gunakan monthpickers.
Instansiasi Monthpicker Nilai yang diambil dari monthpicker ini, selalu merupakan hari PERTAMA dari bulan yang dipilih. Mulai pada bulan berjalan, dan berkisar dari 100 tahun yang lalu dan 10 tahun ke depan.
Itu dia! Itu semua yang Anda butuhkan untuk membuat penjilat bulan.
Saya sepertinya tidak bisa membuat jsfiddle bekerja dengan ini, tetapi ini bekerja untuk saya dalam proyek ASP.NET MVC saya. Lakukan saja apa yang biasanya Anda lakukan untuk menambahkan datepicker ke halaman Anda, dan menggabungkan skrip di atas, mungkin dengan mengubah pemilih (artinya $ ("# MyMonthTextBox")) ke sesuatu yang bekerja untuk Anda.
Saya harap ini membantu seseorang.
Tautan ke pastebins untuk beberapa pengaturan tanggal dan bulan tambahan:
Monthpicker bekerja pada hari terakhir bulan itu . Tanggal yang Anda dapatkan dari penjilat bulan ini akan selalu menjadi hari terakhir bulan itu.
Dua pembuat bulan berkolaborasi ; 'start' bekerja pada hari pertama bulan itu, dan 'akhir' bekerja pada hari terakhir bulan itu. Keduanya dibatasi oleh satu sama lain, jadi memilih satu bulan di 'akhir' yang sebelum bulan yang dipilih pada 'awal', akan mengubah 'mulai' menjadi bulan yang sama dengan 'akhir'. Dan sebaliknya. OPSIONAL: Saat memilih bulan pada 'mulai', 'minDate' pada 'akhir' diatur ke bulan itu. Untuk menghapus fitur ini, beri komentar satu baris di onClose (baca komentar).
Dua datepicker yang berkolaborasi ; Keduanya dibatasi oleh satu sama lain, sehingga memilih tanggal pada 'akhir' yang sebelum tanggal yang dipilih pada 'awal', akan mengubah 'mulai' menjadi bulan yang sama dengan 'akhir'. Dan sebaliknya. OPTIONAL: Ketika memilih tanggal pada 'mulai', 'minDate' pada 'akhir' diatur ke tanggal itu. Untuk menghapus fitur ini, beri komentar satu baris di onClose (baca komentar).
Bagaimana saya mengubah DatePicker menjadi MonthPicker
Saya telah mengambil semua kode javascript dari jquery-ui-1.11.1.js yang berkaitan dengan datepicker mereka, menempelkannya ke file js baru, dan mengganti string berikut:
Kemudian saya menghapus bagian dari for-loop yang menciptakan seluruh div ui-datepicker-calendar (div yang disembunyikan oleh solusi lain menggunakan CSS). Ini dapat ditemukan di fungsi _generateHTML: (inst).
Temukan baris yang mengatakan:
Tandai semuanya dari setelah tag penutup dan turun ke (dan tidak termasuk) baris di mana dikatakan:
Sekarang akan tidak bahagia karena kita perlu menutup beberapa hal. Setelah div-tag penutup dari sebelumnya, tambahkan ini:
Kode sekarang harus disatukan dengan baik. Berikut cuplikan kode yang menunjukkan apa yang seharusnya Anda dapatkan:
Kemudian saya menyalin / menempelkan kode dari jquery-ui.css yang berkaitan dengan datepickers ke file CSS baru, dan mengganti string berikut:
sumber
setelah menggali jQueryUI.com untuk datepicker, inilah kesimpulan dan jawaban saya untuk pertanyaan Anda.
Pertama, saya akan mengatakan tidak untuk pertanyaan Anda. Anda tidak dapat menggunakan datepicker jQueryUI hanya untuk memilih bulan dan tahun. Itu tidak didukung. Tidak memiliki fungsi panggilan balik untuk itu.
Tetapi Anda dapat meretasnya untuk menampilkan hanya bulan dan tahun dengan menggunakan css untuk menyembunyikan hari, dll. Dan saya pikir tidak masuk akal karena Anda perlu tanggal untuk diklik untuk memilih tanggal.
Saya dapat mengatakan Anda hanya perlu menggunakan datepicker lain. Seperti yang disarankan Roger.
sumber
Saya memiliki masalah pemilih tanggal dicampur dengan pemilih bulan. Saya menyelesaikannya seperti itu.
sumber
Jika ada yang mau itu juga untuk beberapa kalender itu tidak terlalu sulit untuk menambahkan functionallity ini ke jquery ui. dengan pencarian yang diperkecil untuk:
tambahkan ini di depan x
pencarian untuk
dan ganti dengan
juga mencari
gantikan dengan
untuk css Anda harus menggunakan:
setelah itu semua selesai hanya pergi ke fungsi init datepicker yang Anda inginkan dan memberikan pengaturan var
justMonth: true
adalah kuncinya di sini :)sumber
Pikirkan tentang: http://www.mattkruse.com/javascript/calendarpopup/
Pilih contoh bulan-pilih
sumber
Membuat beberapa penyempurnaan terhadap respons BrianS yang hampir sempurna di atas:
Saya telah regex nilai yang ditetapkan pada acara karena saya pikir itu benar-benar membuatnya sedikit lebih mudah dibaca dalam kasus ini (meskipun saya menggunakan format yang sedikit berbeda)
Klien saya tidak ingin ada kalender, jadi saya telah menambahkan tambahan kelas pertunjukan / sembunyikan untuk melakukannya tanpa memengaruhi datepicker lainnya. Penghapusan kelas adalah pada timer untuk menghindari tabel berkedip kembali saat datepicker memudar, yang tampaknya sangat terlihat di IE.
EDIT: Satu masalah yang tersisa untuk diselesaikan dengan ini adalah bahwa tidak ada cara untuk mengosongkan datepicker - kosongkan bidang dan klik dan kemudian terisi kembali dengan tanggal yang dipilih.
EDIT2: Saya belum berhasil menyelesaikan ini dengan baik (yaitu tanpa menambahkan tombol Hapus terpisah di sebelah input), jadi akhirnya hanya menggunakan ini: https://github.com/thebrowser/jquery.ui.monthpicker - kalau ada yang bisa dapatkan UI standar untuk melakukannya yang akan luar biasa.
Anda juga memerlukan aturan gaya ini:
sumber
Saya menyukai jawaban @ user1857829 dan pendekatannya "extended-jquery-like-a-plugin". Saya baru saja membuat modifikasi litte sehingga ketika Anda mengubah bulan atau tahun dengan cara apa pun pemetik benar-benar menulis tanggal di lapangan. Saya menemukan bahwa saya suka perilaku itu setelah menggunakannya sedikit.
sumber
Saya mengalami kesulitan tertentu dengan jawaban yang diterima dan tidak ada yang bisa digunakan dengan upaya minimum sebagai basis. Jadi, saya memutuskan untuk men-tweak versi terbaru dari jawaban yang diterima sampai memenuhi setidaknya JS minimum coding / reusability standar.
Berikut adalah cara solusi yang jauh lebih bersih daripada 3 (terbaru) edisi dari Ben Koehler jawaban diterima 's. Selain itu, akan:
mm/yy
format, tetapi dengan yang lain termasuk OPMM yy
.datestr
,month
,year
dll variabel.Coba lihat:
Dan semua yang Anda butuhkan adalah CSS berikut di suatu tempat di sekitar:
Itu dia. Semoga hal di atas akan menghemat waktu bagi pembaca selanjutnya.
sumber
Saya tahu ini agak terlambat, tapi saya punya masalah yang sama beberapa hari sebelumnya dan saya datang dengan solusi yang bagus & lancar. Pertama saya menemukan pemetik tanggal yang hebat ini di sini
Kemudian saya baru saja memperbarui kelas CSS (jquery.calendarPicker.css) yang datang dengan contoh seperti ini:
Plugin menyalakan acara DateChanged ketika Anda mengubah apa pun, jadi tidak masalah bahwa Anda tidak mengklik pada hari (dan itu cocok sebagai pemetik tahun dan bulan)
Semoga ini bisa membantu!
sumber
Saya juga membutuhkan pemetik sebulan. Saya membuat yang sederhana dengan tahun di header dan 3 baris 4 bulan di bawah ini. Lihat ini: Pemetik bulan-bulan sederhana dengan jQuery .
sumber
Saya mencoba berbagai solusi yang disediakan di sini dan mereka bekerja dengan baik jika Anda hanya ingin beberapa drop down.
'Picker' terbaik (dalam penampilan, dll) ( https://github.com/thebrowser/jquery.ui.monthpicker ) yang disarankan di sini pada dasarnya adalah salinan versi lama jepery-ui datepicker dengan _generateHTML yang ditulis ulang. Namun, saya menemukan itu tidak lagi bermain bagus dengan jquery-ui saat ini (1.10.2) dan memiliki masalah lain (tidak menutup pada esc, tidak menutup pada pembukaan widget lainnya, memiliki gaya hardcoded).
Alih-alih mencoba untuk memperbaiki pendorong bulan itu dan bukannya mencoba kembali proses yang sama dengan datepicker terbaru, saya pergi dengan mengaitkan ke bagian yang relevan dari pemilih tanggal yang ada.
Ini melibatkan penggantian:
Karena pertanyaan ini agak lama dan sudah dijawab dengan baik, ini hanya override _selectDay untuk menunjukkan bagaimana ini dilakukan:
Seperti yang dinyatakan, ini adalah pertanyaan lama, tapi saya merasa berguna jadi ingin menambahkan umpan balik dengan solusi alternatif.
sumber
untuk seorang penjawab bulanan, menggunakan JQuery v 1.7.2, saya memiliki javascript berikut yang melakukan hal itu
$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});
sumber
Terima kasih atas solusi Ben Koehler.
Namun, saya punya masalah dengan beberapa contoh datepickers, dengan beberapa dari mereka diperlukan dengan pemilihan hari. Solusi Ben Koehler (dalam edit 3) berfungsi, tetapi menyembunyikan pilihan hari dalam semua kasus. Berikut ini adalah pembaruan yang memecahkan masalah ini:
sumber
Gunakan
onSelect
panggilan balik dan hapus bagian tahun secara manual dan atur teks di bidang secara manualsumber