Bagaimana cara menggunakan jQuery Datepicker dengan input kotak teks:
$("#my_txtbox").datepicker({
// options
});
itu tidak memungkinkan pengguna untuk memasukkan teks acak di kotak teks. Saya ingin Datepicker muncul ketika kotak teks mendapatkan fokus atau pengguna mengkliknya, tapi saya ingin kotak teks mengabaikan input pengguna apa pun menggunakan keyboard (salin & tempel, atau lainnya). Saya ingin mengisi kotak teks secara eksklusif dari kalender Datepicker.
Apakah ini mungkin?
jQuery 1.2.6
Datepicker 1.5.2
jquery
datepicker
Elliot Vargas
sumber
sumber
$("#my_txtbox").prop('readonly', true)
<input ... readonly="readonly" style="cursor:pointer; background-color: #FFFFFF">
Berdasarkan pengalaman saya, saya akan merekomendasikan solusi yang disarankan oleh Adhip Gupta:
Kode berikut tidak akan membiarkan pengguna mengetik karakter baru, tetapi akan memungkinkan mereka untuk menghapus karakter:
Selain itu, ini akan membuat formulir tidak berguna bagi mereka yang menonaktifkan JavaScript:
sumber
readonly
atribut ke bidang melalui JS, Anda memastikan bahwa jika mereka menonaktifkan JavaScript (dan karena itu tidak akan dapat menggunakan datepicker), mereka masih dapat menggunakan formulir melalui entri manual standar.$("#my_txtbox").prop('readonly', true)
;mencoba
sumber
Jika Anda menggunakan kembali pemilih tanggal di banyak tempat maka akan lebih mudah untuk memodifikasi kotak teks juga melalui JavaScript dengan menggunakan sesuatu seperti:
tepat setelah / sebelum tempat di mana Anda menginisialisasi datepicker Anda.
sumber
menyebabkan kotak teks kehilangan nilainya setelah postback.
Anda sebaiknya menggunakan saran Brad8118 yang bekerja dengan sempurna.
EDIT: untuk membuatnya berfungsi untuk IE gunakan 'keydown' bukan 'penekanan tombol'
sumber
tambahkan atribut readonly di jquery.
sumber
Anda memiliki dua opsi untuk menyelesaikan ini. (Sejauh yang aku tahu)
Opsi A: Buat bidang teks Anda hanya baca. Itu bisa dilakukan sebagai berikut.
Opsi B: Ubah fokus curser. Atur agar tidak buram. itu dapat dilakukan dengan mengatur atribut
onfocus="this.blur()"
ke bidang teks pemilih tanggal Anda.Ex:
<input type="text" name="currentDate" id="currentDate" onfocus="this.blur()" readonly/>
sumber
Setelah menginisialisasi pemilih tanggal:
sumber
$(".project-date").datepicker().keydown(false);
Untuk datepicker memunculkan fokus:
Jika Anda tidak ingin input pengguna, tambahkan ini ke kolom input
sumber
Saya baru saja menemukan ini jadi saya berbagi di sini. Ini pilihannya
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#ignorereadlyly
Ini kodenya.
HTML
JS
Ini biola:
http://jsfiddle.net/matbaric/wh1cb6cy/
Versi bootstrap-datetimepicker.js saya adalah 4.17.45
sumber
Jenis demo ini melakukannya dengan meletakkan kalender di atas bidang teks sehingga Anda tidak bisa mengetiknya. Anda juga dapat mengatur bidang input untuk hanya membaca dalam HTML untuk memastikan.
sumber
HTML
CSS
sumber
Saya tahu utas ini sudah lama, tetapi bagi orang lain yang mengalami masalah yang sama, yang mengimplementasikan solusi @ Brad8118 (yang saya suka, karena jika Anda memilih untuk membuat input hanya dibaca maka pengguna tidak akan dapat menghapus nilai tanggal yang dimasukkan dari datepicker jika ia memilih) dan juga perlu mencegah pengguna menempelkan nilai (seperti yang disarankan oleh @ErikPhilips), saya membiarkan penambahan ini di sini, yang berfungsi untuk saya:
$("#my_txtbox").bind('paste',function(e) { e.preventDefault(); //disable paste });
dari sini https://www.dotnettricks.com/learn/ jquery / disable-cut-copy-and-paste-in-textbox-using-jquery-javascript dan seluruh skrip khusus yang digunakan oleh saya (sebagai gantinya menggunakan plugin fengyuanchen / datepicker):sumber
Alih-alih menambahkan readonly Anda juga dapat menggunakan onkeypress = "return false;"
sumber
Saya telah menemukan bahwa plugin Kalender jQuery, bagi saya setidaknya, secara umum hanya berfungsi lebih baik untuk memilih tanggal.
sumber
sumber
Inilah jawaban Anda yang merupakan cara untuk menyelesaikannya. Anda tidak ingin menggunakan jquery ketika Anda membatasi input pengguna dalam kontrol kotak teks.
sumber
$ ("# my_txtbox"). prop ('readonly', true)
bekerja seperti pesona ..
sumber
Alih-alih menggunakan kotak teks Anda dapat menggunakan tombol juga. Berfungsi terbaik untuk saya, di mana saya tidak ingin pengguna menulis tanggal secara manual.
sumber
Saya tahu pertanyaan ini sudah dijawab, dan sebagian besar menyarankan untuk menggunakan
readonly
attribure.Saya hanya ingin membagikan skenario dan jawaban saya.
Setelah menambahkan
readonly
atribut ke Elemen HTML saya , saya menghadapi masalah bahwa saya tidak dapat menjadikan atribut inirequired
secara dinamis.Bahkan mencoba pengaturan keduanya
readonly
danrequired
pada waktu pembuatan HTML.Jadi saya sarankan jangan gunakan
readonly
jika Anda ingin mengaturnyarequired
juga.Sebaliknya gunakan
Ini memungkinkan untuk menekan
tab
tombol saja.Anda dapat menambahkan lebih banyak kode kunci yang ingin Anda bypass.
Saya di bawah kode karena saya telah menambahkan keduanya
readonly
danrequired
masih mengirimkan formulir.Setelah menghapusnya
readonly
berfungsi dengan baik.https://jsfiddle.net/shantaram/hd9o7eor/
sumber
ganti ID pemilih waktu: IDofDatetimePicker ke id Anda.
Ini akan mencegah pengguna memasukkan input keyboard lebih lanjut tetapi tetap saja, pengguna akan dapat mengakses popup waktu.
$ ("# my_txtbox"). keypress (fungsi (acara) {event.preventDefault ();});
Coba sumber ini: https://github.com/jonthornton/jquery-timepicker/issues/109
sumber
Pertanyaan ini memiliki banyak jawaban yang lebih lama dan tampaknya hanya solusi yang diterima secara umum. Saya percaya pendekatan yang lebih baik di browser modern adalah dengan menggunakan
inputmode="none"
tag input HTML:atau, jika Anda lebih suka melakukannya dalam skrip:
Saya belum mengujinya secara ekstensif, tetapi bekerja dengan baik pada pengaturan Android yang telah saya gunakan.
sumber
Atau Anda bisa, misalnya, menggunakan bidang tersembunyi untuk menyimpan nilai ...
dan di datepicker $ ("# my_txtbox"). ({options:
sumber
Jika Anda ingin pengguna memilih tanggal dari datepicker tetapi Anda tidak ingin pengguna mengetik di dalam kotak teks kemudian gunakan kode berikut:
sumber