Bagaimana saya bisa membatasi kemungkinan input dalam elemen "angka" HTML5?

359

Untuk <input type="number">elemen, maxlengthtidak berfungsi. Bagaimana saya bisa membatasi maxlengthelemen nomor itu?

Prasad
sumber
5
Untuk orang yang mencari solusi yang lebih baik, ini yang terbaik: stackoverflow.com/questions/9361193/…
Ünsal Korkmaz
4
Atribut max tidak berfungsi di browser chrome di tablet android.
Foreever
4
@ ÜnsalKorkmaz: solusi itu memiliki kerugian karena tidak memunculkan tombol angka di perangkat android
Will

Jawaban:

340

Dan Anda dapat menambahkan maxatribut yang akan menentukan angka setinggi mungkin yang dapat Anda masukkan

<input type="number" max="999" />

jika Anda menambahkan a maxdan minnilai, Anda dapat menentukan rentang nilai yang diizinkan:

<input type="number" min="1" max="999" />

Di atas masih tidak akan menghentikan pengguna dari memasukkan nilai secara manual di luar rentang yang ditentukan. Sebagai gantinya, ia akan ditampilkan sembulan yang memberitahukannya untuk memasukkan nilai dalam rentang ini setelah mengirimkan formulir seperti yang ditunjukkan dalam tangkapan layar ini:

masukkan deskripsi gambar di sini

Cyclonecode
sumber
4
Krister, ini berhasil. Juga seperti @Andy berkata saya telah menggunakan oninput untuk memotong nomor tambahan. Referensi mathiasbynens.be/notes/oninput
Prasad
7
@ Paras - Jika jawaban Andy benar, pilihlah, bukan yang paling banyak dipilih.
Moshe
81
Ini benar, tetapi harus dicatat karena Andy menyatakan bahwa ini tidak membatasi seseorang untuk mengetik nomor yang lebih panjang. Jadi itu tidak benar-benar setara dengan maxlength dalam bidang teks.
DA.
9
Jika Anda hanya memasukkan pelampung presisi yang lebih tinggi, ini akan pecah. Misalnya 3.1415926 mengelak karena ini kurang dari 999 dan lebih besar dari 1.
0112
44
Saya tidak tahu mengapa hal ini sangat terangkat dan diterima ketika itu tidak berhasil! Ini hanya memengaruhi kontrol "pemintal", dan tidak melakukan apa pun untuk menghentikan pengguna mengetikkan angka yang panjang.
Codemonkey
115

Anda dapat menentukan atribut mindan max, yang akan memungkinkan input hanya dalam rentang tertentu.

<!-- equivalent to maxlength=4 -->
<input type="number" min="-9999" max="9999">

Ini hanya berfungsi untuk tombol kontrol pemintal. Meskipun pengguna mungkin dapat mengetikkan angka yang lebih besar dari yang diizinkan max, formulir tidak akan mengirimkan.

Pesan validasi Chrome untuk angka lebih besar dari maks
Cuplikan layar diambil dari Chrome 15

Anda dapat menggunakan oninputacara HTML5 dalam JavaScript untuk membatasi jumlah karakter:

myInput.oninput = function () {
    if (this.value.length > 4) {
        this.value = this.value.slice(0,4); 
    }
}
Andy E
sumber
11
Satu masalah yang mungkin terjadi dengan pendekatan JavaScript: Mungkin tidak berfungsi seperti yang diharapkan jika titik penyisipan tidak ada di akhir nilai. Misalnya, jika Anda memasukkan nilai "1234" di bidang input, lalu pindahkan titik penyisipan kembali ke awal nilai dan ketik "5", Anda berakhir dengan nilai "5123". Ini berbeda dari bidang tipe input = "teks" dengan panjang maksimal 4, di mana browser tidak akan membiarkan Anda mengetik karakter ke-5 ke dalam bidang "penuh", dan nilainya tetap "1234".
Jon Schneider
@Andy, Jelas pertanyaannya adalah mencari cara non-JS untuk melakukan maxlength.............
Pacerier
4
@ Peracerier: apakah sesuatu dalam jawaban saya menyiratkan bahwa saya pikir sebaliknya? Seperti yang Anda lihat, saya menawarkan solusi terdekat yang dapat dicapai dengan hanya menggunakan HTML, bersama dengan saran tambahan yang menggunakan JavaScript di mana OP mungkin ingin mencegah pengguna mengetik lebih banyak karakter daripada yang diizinkan.
Andy E
84

Jika Anda mencari solusi Web Seluler di mana Anda ingin pengguna Anda melihat papan nomor daripada keyboard teks lengkap. Gunakan type = "tel". Ini akan bekerja dengan maxlength yang menyelamatkan Anda dari membuat javascript tambahan.

Maks dan Min masih akan memungkinkan pengguna untuk Mengetik angka lebih dari maks dan min, yang tidak optimal.

Duane
sumber
3
Hebat menemukan, ini bekerja seperti pesona, jempol karena tidak harus membuat javascript tambahan.
Diego
9
Saya telah menemukan bahwa ini bukan solusi terbaik untuk input numerik karena input "tel" memungkinkan untuk simbol tambahan, dan ini menampilkan huruf di samping setiap angka. Keyboard murni numerik terlihat jauh lebih bersih.
hawkharris
@hawkharris Anda benar, ketik = "number" adalah UI pembersih. Lebih mudah untuk mengetik karakter buruk secara tidak sengaja. Jadi validasi tambahan diperlukan untuk memastikan pengguna tidak memasukkan data buruk. Tetapi juga pertimbangkan bahwa pengguna dapat dengan mudah memasukkan semua titik desimal juga dengan keyboard angka. Juga tidak menyelesaikan pertanyaan di atas tanpa JavaScript tambahan.
Duane
1
Terima kasih, saya sedang mengerjakan aplikasi seluler kerangka kerja ionik dan ini menyelesaikan masalah saya
Ahmed
1
jika digunakan dengan pattern = "[0-9] *" simbol tambahan akan dinonaktifkan
apereira
71

Anda dapat menggabungkan semua ini seperti ini:

<input name="myinput_drs"
oninput="maxLengthCheck(this)"
type = "number"
maxlength = "3"
min = "1"
max = "999" />

<script>
  // This is an old version, for a more recent version look at
  // https://jsfiddle.net/DRSDavidSoft/zb4ft1qq/2/
  function maxLengthCheck(object)
  {
    if (object.value.length > object.maxLength)
      object.value = object.value.slice(0, object.maxLength)
  }
</script>


Pembaruan:
Anda mungkin juga ingin mencegah karakter non-numerik dimasukkan, karena object.lengthakan menjadi string kosong untuk input angka, dan karenanya panjangnya akan menjadi 0. Dengan demikian maxLengthCheckfungsi tidak akan berfungsi.

Solusi:
Lihat ini atau ini sebagai contoh.

Demo - Lihat versi lengkap kode di sini:
http://jsfiddle.net/DRSDavidSoft/zb4ft1qq/1/

Pembaruan 2: Berikut kode pembaruan: https://jsfiddle.net/DRSDavidSoft/zb4ft1qq/2/

Pembaruan 3: Harap dicatat bahwa memungkinkan lebih dari satu titik desimal dimasukkan dapat mengacaukan nilai angka.

David Refoua
sumber
Ini adalah solusi yang baik, tetapi saya menemukan bahwa object.value.length mengembalikan 0 jika ada nilai non-numerik yang dimasukkan.
Andrew
1
@AndrewSpear Itu karena object.value akan menjadi string kosong jika Anda memasukkan nilai-nilai non-numerik dalam input dengan jenis set 'angka'. Lihat dokumentasi. Baca juga pembaruan saya untuk memperbaiki masalah ini.
David Refoua
Ini masih rusak jika Anda memasukkan lebih dari satu titik desimal, seperti 111..1111. Jangan gunakan kode ini untuk keamanan, karena kode berbahaya mungkin masih bisa dilewati.
PieBie
@PieBie Bung, kode ini untuk 3+ tahun yang lalu. Gunakan jQuery sebagai gantinya.
David Refoua
1
ya, saya tahu itu, tetapi pemula mungkin masih tinggal salin-tempel.
PieBie
26

itu sangat sederhana, dengan beberapa javascript Anda dapat mensimulasikan maxlength, periksa:

//maxlength="2"
<input type="number" onKeyDown="if(this.value.length==2) return false;" />
Maycow Moura
sumber
12
Dengan solusi Anda, Anda tidak dapat menggunakan backspace setelah Anda mencapai 2 karakter. tapi saya kehilangan beberapa hal untuk solusi fungsional
Christophe Debove
12
Alih-alih onKeyDownAnda harus menggunakan onKeyPress.
Rupesh Arora
1
tidak akan berfungsi jika Anda menyorot teks dan menekan satu karakter (yaitu untuk mengganti konten input)
Arijoon
validasi ini jika ini bukan dari kunci berikut stackoverflow.com/a/2353562/1534925
Akshay
3
masalah dengan keydownadalah bahwa Anda tidak dapat menggunakan backspace pada karakter maksimal. masalah dengan keypressadalah bahwa Anda dapat menyalin + menempel di luar karakter maks.
Stavm
23

Atau jika nilai maks Anda misalnya 99 dan minimum 0, Anda dapat menambahkan ini ke elemen input (nilai Anda akan ditulis ulang oleh nilai maks Anda, dll.)

<input type="number" min="0" max="99" 
   onKeyUp="if(this.value>99){this.value='99';}else if(this.value<0){this.value='0';}"
id="yourid">

Kemudian (jika Anda mau), Anda dapat memeriksa apakah input benar-benar angka

Richard
sumber
... Hebat, tetapi Anda tidak perlu lagi dan lagi. (hanya mengatakan)
xoxel
2
@xoxel Anda lakukan jika Anda ingin pesan peringatan tetap ditampilkan
DNKROZ
Ini sangat bagus ... Terima kasih
Vincy Oommen
demi generalisasi yang akan saya lakukanonKeyUp="if(this.value>this.max)this.value=this.max;if(this.value<this.min)this.value=this.min;"
oriadam
18

Anda dapat menetapkannya sebagai teks, tetapi menambahkan pettern, yang hanya cocok dengan angka:

<input type="text" pattern="\d*" maxlength="2">

Ini berfungsi sempurna dan juga pada ponsel (diuji pada iOS 8 dan Android) muncul nomor keyboard.

Chris Panayotoff
sumber
Atribut pola tidak didukung di IE9 dan versi sebelumnya, dan memiliki dukungan parsial di Safari: caniuse.com/#feat=input-pattern
diazdeteran
Ya, terima kasih telah menunjuk, tapi kami menjatuhkan dukungan IE9 (memotong mustard darinya), dan saya lebih suka menggunakan metode JS. Tergantung pada proyek.
Chris Panayotoff
2
Seorang pengguna tidak dicegah memasukkan karakter non-numerik dengan ini. Mereka dapat memasukkan 2 karakter apa saja. Satu- patternsatunya penyebab penyorotan validasi.
brt
diuji pada Android 9 (Nokia 8) tetapi saya mendapatkan keyboard reguler :( ada ide?
oriadam
14

//For Angular I have attached following snippet.
<div ng-app="">
  <form>
    Enter number: <input type="number" ng-model="number" onKeyPress="if(this.value.length==7) return false;" min="0">
  </form>
  <h1>You entered: {{number}}</h1>
</div>

Jika Anda menggunakan acara "onkeypress" maka Anda tidak akan mendapatkan batasan pengguna saat mengembangkan (unit test it). Dan jika Anda memiliki persyaratan yang tidak mengizinkan pengguna untuk masuk setelah batas tertentu, lihat kode ini dan coba sekali.

Prasad Shinde
sumber
1
Masalah yang saya lihat di sini adalah: 1. ganti dengan memilih teks dan jenis tidak bekerja jika input telah mencapai 7 angka 2. meningkatkan input dengan 1 ketika hit "boarder" hits berfungsi -> 9999999 dan klik atas tombol. Breaks the limitation
Edub
Saya mencoba dengan javascript versi sederhana. Jika mau, Anda dapat melihat menggunakan cuplikan kode Jalankan. Karena itu saya tidak menemukan batasan.
Prasad Shinde
1
Juga tidak menemukan batasan. Itu berhenti di 7 digit. Saya menggunakan solusi ini untuk kode saya.
Claudio
Ada batasan. Ketika Anda mencapai batas, pilih semua dan ingin menggantinya, itu tidak berfungsi. Pengganti hanya berfungsi untuk saya ketika saya menimpa nilai dengan yang pertama sebelum saya kembali salah.
Insomnia88
@ Insomnia88, @ edub bagaimana jika kita menulis fungsi dan memeriksa kondisi yang diperlukan ...
Prasad Shinde
12

Pilihan lain adalah dengan hanya menambahkan pendengar untuk apa pun dengan atribut maxlength dan menambahkan nilai slice untuk itu. Dengan asumsi pengguna tidak ingin menggunakan fungsi di dalam setiap peristiwa yang terkait dengan input. Berikut cuplikan kode. Abaikan kode CSS dan HTML, JavaScript yang penting.

// Reusable Function to Enforce MaxLength
function enforce_maxlength(event) {
  var t = event.target;
  if (t.hasAttribute('maxlength')) {
    t.value = t.value.slice(0, t.getAttribute('maxlength'));
  }
}

// Global Listener for anything with an maxlength attribute.
// I put the listener on the body, put it on whatever.
document.body.addEventListener('input', enforce_maxlength);
label { margin: 10px; font-size: 16px; display: block }
input { margin: 0 10px 10px; padding: 5px; font-size: 24px; width: 100px }
span { margin: 0 10px 10px; display: block; font-size: 12px; color: #666 }
<label for="test_input">Text Input</label>
<input id="test_input" type="text" maxlength="5"/>
<span>set to 5 maxlength</span>

<br>

<label for="test_input">Number Input</label>
<input id="test_input" type="number" min="0" max="99" maxlength="2"/>
<span>set to 2 maxlength, min 0 and max 99</span>

Brandon Buttars
sumber
10

Panjang max tidak akan bekerja dengan <input type="number"cara terbaik yang saya tahu adalah menggunakan oninputevent untuk membatasi maxlength. Silakan lihat kode di bawah ini untuk implementasi sederhana.

<input name="somename"
    oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
    type = "number"
    maxlength = "6"
 />
Neha Jain
sumber
Bekerja seperti pesona!
SiboVG
9

Katakanlah Anda ingin nilai maksimum yang dibolehkan adalah 1000 - baik diketik atau dengan pemintal.

Anda membatasi nilai pemintal menggunakan: type="number" min="0" max="1000"

dan batasi apa yang diketik oleh keyboard dengan javascript: onkeyup="if(parseInt(this.value)>1000){ this.value =1000; return false; }"

<input type="number" min="0" max="1000" onkeyup="if(parseInt(this.value)>1000){ this.value =1000; return false; }">
Stnfordly
sumber
8

Seperti yang dinyatakan oleh yang lain, min / max tidak sama dengan maxlength karena orang masih bisa memasukkan float yang akan lebih besar dari panjang string maksimum yang Anda inginkan. Untuk benar-benar meniru atribut maxlength, Anda dapat melakukan sesuatu seperti ini dalam keadaan darurat (ini setara dengan maxlength = "16"):

<input type="number" oninput="if(value.length>16)value=value.slice(0,16)">
Terima kasih
sumber
slice akan menghapus karakter tanpa sepengetahuan pengguna akhir saat dimasukkan di antara keduanya. sedangkan max-length akan diblokir.
Pradeep Kumar Prabaharan
@PradeepKumarPrabaharan maxlengthtidak didukung oleh input angka. Dalam contoh saya, value.slice(0,16)tidak akan menendang kecuali nilai input lebih panjang dari 16 karakter.
thdoan
ya maxlength tidak didukung untuk input angka .. kode ini gud tetapi kode ini tidak cocok dengan properti maxlength dengan tepat ..
Pradeep Kumar Prabaharan
@TobiasGaertner type="number"membereskannya :).
thdoan
@ 10basetom ... tergantung pada peramban ... misalnya dalam FF Anda masih dapat memasukkan karakter dan mereka tidak akan berhenti setelah batas - tetapi terkait dengan gagasan nomor jenis ini adalah solusi yang dapat diterima.
Tobias Gaertner
6

Jawaban Maycow Moura adalah awal yang baik. Namun, solusinya berarti bahwa ketika Anda memasukkan digit kedua semua pengeditan bidang berhenti. Jadi, Anda tidak dapat mengubah nilai atau menghapus karakter apa pun.

Kode berikut berhenti di 2, tetapi memungkinkan pengeditan untuk melanjutkan;

//MaxLength 2
onKeyDown="if(this.value.length==2) this.value = this.value.slice(0, - 1);"
Tim Wright
sumber
2
Nggak. Coba tempel nilai.
Qwertiy
6

Saya punya masalah ini sebelumnya dan saya menyelesaikannya menggunakan kombinasi tipe nomor html5 dan jQuery.

<input maxlength="2" min="0" max="59" name="minutes" value="0" type="number"/>

naskah:

$("input[name='minutes']").on('keyup keypress blur change', function(e) {
    //return false if not 0-9
    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
       return false;
    }else{
        //limit length but allow backspace so that you can still delete the numbers.
        if( $(this).val().length >= parseInt($(this).attr('maxlength')) && (e.which != 8 && e.which != 0)){
            return false;
        }
    }
});

Saya tidak tahu apakah kejadiannya sedikit berlebihan tetapi itu menyelesaikan masalah saya. JSfiddle

tiltdown
sumber
Anda dapat dengan mudah menempelkan karakter ke dalam.
Jessica
4

Input HTML

 <input class="minutesInput" type="number" min="10" max="120" value="" />

jQuery

 $(".minutesInput").on('keyup keypress blur change', function(e) {

    if($(this).val() > 120){
      $(this).val('120');
      return false;
    }

  });
Menggertak
sumber
4

cara sederhana untuk mengatur panjang maksimum untuk input angka adalah:

<input type="number" onkeypress="return this.value.length < 4;" oninput="if(this.value.length>=4) { this.value = this.value.slice(0,4); }" />
HexboY
sumber
tidak bekerja di chrome android. onkeypress memiliki beberapa masalah dengan ini.
Aakash Thakur
3

Seperti halnya type="number", Anda menentukan maxalih - alih maxlengthproperti, yang merupakan jumlah maksimum yang dimungkinkan. Jadi dengan 4 digit, maxseharusnya 9999, 5 digit 99999dan sebagainya.

Juga jika Anda ingin memastikan itu adalah angka positif, Anda dapat mengatur min="0", memastikan angka positif.

Jan Dragsbaek
sumber
3

Ugh. Ini seperti seseorang menyerah setengah jalan melalui penerapannya dan berpikir tidak ada yang akan memperhatikan.

Untuk alasan apa pun, jawaban di atas tidak menggunakan atribut mindan max. JQuery ini menyelesaikannya:

    $('input[type="number"]').on('input change keyup paste', function () {
      if (this.min) this.value = Math.max(parseInt(this.min), parseInt(this.value) || 0);
      if (this.max) this.value = Math.min(parseInt(this.max), parseInt(this.value) || 0);
    });

Mungkin juga akan berfungsi sebagai fungsi bernama "oninput" tanpa jQuery jika salah satu dari tipe "jQuery-is-the-devil" Anda.

Michael Cole
sumber
itu tidak benar menjawab pertanyaan, tetapi memilih karena telah memecahkan masalah saya :)
TrOnNe
2

Seperti yang saya ketahui, Anda tidak dapat menggunakan salah satu dari onkeydown, onkeypressatau onkeyupacara untuk solusi lengkap termasuk browser seluler. Omong-omong onkeypresssudah usang dan tidak ada lagi di chrome / opera untuk android (lihat: UI Events W3C Working Draft, 04 Agustus 2016 ).

Saya menemukan solusi menggunakan oninputacara saja. Anda mungkin harus melakukan pengecekan angka tambahan seperti yang disyaratkan seperti tanda negatif / positif atau desimal dan ribuan pemisah dan sejenisnya tetapi sebagai permulaan berikut ini sudah cukup:

function checkMaxLength(event) {
	// Prepare to restore the previous value.
	if (this.oldValue === undefined) {
		this.oldValue = this.defaultValue;
	}

	if (this.value.length > this.maxLength) {
		// Set back to the previous value.
		this.value = oldVal;
	}
	else {
		// Store the previous value.
		this.oldValue = this.value;
		
		// Make additional checks for +/- or ./, etc.
		// Also consider to combine 'maxlength'
		// with 'min' and 'max' to prevent wrong submits.
	}
}

Saya juga akan merekomendasikan untuk menggabungkan maxlengthdengan mindan maxuntuk mencegah pengiriman yang salah sebagaimana dinyatakan di atas beberapa kali.

markus s
sumber
2
<input type="number" onchange="this.value=Math.max(Math.min(this.value, 100), -100);" />

atau jika Anda ingin dapat memasukkan apa pun

<input type="number" onchange="this.value=this.value ? Math.max(Math.min(this.value,100),-100) : null" />
j4r3k
sumber
1

Anda dapat mencoba ini juga untuk input numerik dengan batasan panjang

<input type="tel" maxlength="3" />
shinobi
sumber
@tiltdown Sry untuk kesalahan ketik. Memperbaiki jawabannya.
shinobi
1

Saya tahu sudah ada jawaban, tetapi jika Anda ingin input Anda berperilaku persis seperti maxlengthatribut atau sedekat mungkin, gunakan kode berikut:

(function($) {
 methods = {
    /*
     * addMax will take the applied element and add a javascript behavior
     * that will set the max length
     */
    addMax: function() {
        // set variables
        var
            maxlAttr = $(this).attr("maxlength"),
            maxAttR = $(this).attr("max"),
            x = 0,
            max = "";

        // If the element has maxlength apply the code.
        if (typeof maxlAttr !== typeof undefined && maxlAttr !== false) {

            // create a max equivelant
            if (typeof maxlAttr !== typeof undefined && maxlAttr !== false){
                while (x < maxlAttr) {
                    max += "9";
                    x++;
                }
              maxAttR = max;
            }

            // Permissible Keys that can be used while the input has reached maxlength
            var keys = [
                8, // backspace
                9, // tab
                13, // enter
                46, // delete
                37, 39, 38, 40 // arrow keys<^>v
            ]

            // Apply changes to element
            $(this)
                .attr("max", maxAttR) //add existing max or new max
                .keydown(function(event) {
                    // restrict key press on length reached unless key being used is in keys array or there is highlighted text
                    if ($(this).val().length == maxlAttr && $.inArray(event.which, keys) == -1 && methods.isTextSelected() == false) return false;
                });;
        }
    },
    /*
     * isTextSelected returns true if there is a selection on the page. 
     * This is so that if the user selects text and then presses a number
     * it will behave as normal by replacing the selection with the value
     * of the key pressed.
     */
    isTextSelected: function() {
       // set text variable
        text = "";
        if (window.getSelection) {
            text = window.getSelection().toString();
        } else if (document.selection && document.selection.type != "Control") {
            text = document.selection.createRange().text;
        }
        return (text.length > 0);
    }
};

$.maxlengthNumber = function(){
     // Get all number inputs that have maxlength
     methods.addMax.call($("input[type=number]"));
 }

})($)

// Apply it:
$.maxlengthNumber();
Philll_t
sumber
@Phill_t mungkin Anda bisa mencerahkan saya? Saya menggunakan kode Anda dan itu bekerja dengan baik dalam prinsipnya TETAPI "$ (ini) .attr (" maxlength ")" selalu memberikan 2. DAN mengapa lebih baik menggunakan "$ (ini) .attr (" maxlength ")" apakah itu berfungsi, bukan hanya "this.maxlength" yang saya uji dan bekerja seperti yang diharapkan dan lebih pendek dan juga lebih jelas untuk membaca? Apakah saya melewatkan sesuatu?
markus s
Apa maksudmu "menghasilkan 2"?
Philll_t
Phill_t permintaan maafku "this.maxLength" hanya berfungsi dalam lingkup fungsi keydown. Dalam fungsi "addMax" "this" adalah dokumen daripada elemen yang diharapkan dan karenanya memiliki nilai atribut yang berbeda. Bagaimana cara saya mendapatkan akses ke input nomor? Apakah kode di atas benar-benar bekerja di pihak Anda? Saya menguji dengan Chrome / Opera / Vivaldi, Firefox, Edge, IE dan Safari dan memiliki hasil yang sama untuk setiap browser. Oke, di Edge maxlegth = "1" dan maxlength = "2" di mana memang berfungsi tetapi "$ (ini) .attr (" maxlength ")" tidak bertambah lagi untuk angka yang lebih tinggi !!? @ semua orang: Ada saran?
markus s
Seperti yang saya katakan selalu ada dua karena dipanggil pada dokumen dan bukan pada elemen yang dimaksud ketika saya tahu ketika saya sedang debugging. Ngomong-ngomong Anda mungkin juga ingin melihat solusi saya yang saya tahu setelah mempelajari milik Anda: stackoverflow.com/a/41871960/1312012
markus s
0

Atribut yang lebih relevan untuk digunakan adalah mindan max.

Marcel
sumber
0

Ini mungkin membantu seseorang.

Dengan sedikit javascript, Anda dapat mencari semua input datetime-lokal, cari jika tahun pengguna mencoba untuk memasukkan, lebih besar dari 100 tahun di masa depan:

$('input[type=datetime-local]').each(function( index ) {

    $(this).change(function() {
      var today = new Date();
      var date = new Date(this.value);
      var yearFuture = new Date();
      yearFuture.setFullYear(yearFuture.getFullYear()+100);

      if(date.getFullYear() > yearFuture.getFullYear()) {

        this.value = today.getFullYear() + this.value.slice(4);
      }
    })
  });
Simon Berton
sumber