Ketika saya mengetik angka terakhir , angka pertama masuk ke dalam text-box
(menghilang), itu menambah satu ruang ekstra.
Setelah saya klik di luar text-box
itu terlihat bagus yang saya butuhkan saat mengetik karakter terakhir.
#number_text {
padding-left: 9px;
letter-spacing: 31px;
border: 0;
background-image: linear-gradient(to right, #e1e1e1 70%, rgba(255, 255, 255, 0) 0%);
background-position: left bottom;
background-size: 38px 1px;
background-repeat: repeat-x;
width: 220px;
box-sizing: border-box;
outline:none;
}
<input type="text" id="number_text" maxlength="6" pattern="\d{6}" value="1234" >
Bantu saya untuk keluar dari masalah ini. Terima kasih
javascript
jquery
html
css
Jignesh Panchal
sumber
sumber
1
(karakter pertama) hilang di sebelah kiri input (digulirkan dengan limpahan tersembunyi).input
kontrol terpisah dan memindahkan tanda sisipan di antara mereka sebagai karakter yang diketik / dihapus. Kalau tidak, Anda akan selalu memiliki masalah penyelarasan antara browser / ukuran font / tingkat zoom dllJawaban:
Tambahkan ruang untuk nomor lain dan klip input menggunakan
clip-path
Atau tanpa clip-path dengan mengurangi ukuran latar belakang:
sumber
Gunakan kode ini. itu bekerja dengan baik
sumber
else if (myLength <= maxLength) { prev=target.previousElementSibling; while (prev = prev) { if (prev == null) break; if (prev.tagName.toLowerCase() == "input") { prev.focus(); break; } } }
parseInt(target.attributes["maxlength"].value, 6);
"6" bukan default, ini adalah basis untuk mengonversi intCoba tambahkan skrip ini di bawah kolom input:
Yang ini memaksa kursor input Anda ke awal input setelah karakter keenam dimasukkan. Saya juga menambahkan blur () ke bidang sehingga kursor-lompat ke awal tidak akan menonjol.
Waktu tunggu juga diperlukan. Tanpanya karakter yang dimasukkan akan dimasukkan di awal. Lebih lanjut tentang batas waktu: Apakah setTimeout solusi yang baik untuk melakukan fungsi async dengan javascript?
sumber
Anda dapat mengatasinya dengan menambahkan blur () event js onkeyup dari kotak input:
sumber
Silakan ubah css di bawah ini (ini akan bekerja)
untuk
sumber
Jadi saya suka jawaban Temani Afif tentang menggunakan topeng kliping. Berpikir itu hebat. Saya ingin mengusulkan solusi lain (sedikit kurang elegan). Saya menggunakan Firefox untuk juga menguji masalah ini, dan mengklik di luar area teks (kehilangan fokus) tidak membuat digit pertama muncul kembali atau string kembali normal di input teks di sana.
Saya percaya masalahnya adalah atribut spasi huruf css yang Anda tetapkan:,
letter-spacing: 31px;
dan fakta bahwa saya percaya ini akan berlaku untuk tanda "berkedip" yang dimiliki sebagian besar browser. Menggunakan Chrome, tampaknya menghapus ini ketika kehilangan fokus, sementara Firefox mempertahankan ini bahkan setelah kehilangan fokus.Solusi pertama adalah menggunakan fungsi panggilan blur () secara manual untuk membuat input kehilangan fokus. Ini berfungsi di Chrome (menggunakan Fungsi Anonim yang Melakukan sendiri):
atau bahkan sebagai Fungsi yang Ditentukan yang dipanggil oleh input number_text seperti:
Anda akan melihat sedikit keterlambatan di Chrome, tetapi memanggil ini di Firefox tidak akan menyelesaikan masalah.
Kami pada dasarnya dapat memaksa perilaku yang sama ini di Firefox. Setelah beberapa bermain-main, saya pikir Chrome sedang menyegarkan / menghitung ulang jarak huruf pada blur. Sesi permainan saya menunjukkan bahwa Anda dapat memaksa Firefox untuk menghitung ulang nilai ini secara terprogram:
Dalam kode, ini akan terlihat seperti fungsi JavaScript berikut:
Ini akan memiliki kedipan yang sama di Firefox dengan Chrome, dan semuanya akan baik-baik saja.
Catatan : Fungsi batas waktu adalah memberi waktu browser untuk menyegarkan, dan benar-benar memperbarui apa yang kita butuhkan.
Catatan : Anda dapat memilih untuk memanggil .blur () dalam fungsi untuk membuat kotak teks kehilangan fokus, atau menghilangkannya dan mereka akan tetap berada di bidang input tanpa kesalahan dengan digit.
Semoga ini bisa membantu pemahaman konseptual Anda, serta menyelesaikan masalah. Beberapa orang lain memberikan solusi bagus yang menghindari keseluruhan flicker, dan bekerja di Firefox dan Chrome!
sumber
Sepertinya masalah UI umum yang pernah saya temui sebelumnya.
Saya yakin itu hanya gagal pada beberapa platform juga (ini adalah sifat bug khusus ini.)
Pada beberapa, tetapi tidak semua, platform, karakter spasi digunakan untuk menunjukkan tanda sisipan.
Pada beberapa, tetapi tidak semua, platform, karakter ini non-spasi, tetapi overlay, pada karakter berikutnya, bukan yang terakhir. Karenanya jika tidak ada karakter berikutnya akan diisi dengan spasi sampai input selesai.
Dalam kedua kasus ini tampilan akan bertindak dengan cara ini.
Ini adalah kasus di mana solusi terbaik adalah solusi paling sederhana, mengakomodasi untuk kekhasan sistem umum ini, bukan solusi yang memaksanya berperilaku seperti yang Anda inginkan seperti yang disarankan beberapa orang. Ini cenderung menyebabkan bug, dan lebih mungkin bekerja di semua platform.
Solusinya adalah berikan sedikit ruang kosong di akhir entri untuk memajang ini.
Tingkatkan " lebar " menjadi 230 atau 240 dan Anda harus baik.
Lebih lanjut, Anda bahkan dapat mengakomodasi sistem non-standar dengan lebih baik, terutama sistem aksesibilitas dengan font alternatif atau atribut ukuran, dengan hanya mendeteksi lebar dengan memasukkan ruang lebar penuh di area tersebut, menambahkan ruang lebar seperempat di bagian akhir, mengukurnya, lalu menghapusnya. mereka, atau hanya mencurangi untuk menimpa ruang lebar penuh saat pengguna mengetik (atau memasukkan data, jangan menganggap itu keyboard atau bahkan sesuatu yang memasukkan satu karakter pada satu waktu.)
sumber
sumber