Batasi jumlah karakter yang diperbolehkan dalam bidang teks masukan formulir

115

Bagaimana cara membatasi atau membatasi pengguna untuk hanya memasukkan maksimal lima karakter ke dalam kotak teks?

Di bawah ini adalah bidang masukan sebagai bagian dari formulir saya:

<input type="text" id="sessionNo" name="sessionNum" />

Apakah itu menggunakan sesuatu seperti maxSize atau sesuatu seperti itu?

BruceyBandit
sumber
16
Di sini <input type="text" maxlength="5"> Demo langsung: jsfiddle.net/mcBbW/1
Šime Vidas

Jawaban:

174

maxlength :

Jumlah karakter maksimum yang akan diterima sebagai input. Ini bisa lebih besar dari yang ditentukan oleh SIZE, dalam hal ini bidang akan di-scroll dengan benar. Defaultnya tidak terbatas.

<input type="text" maxlength="2" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" />

Namun, ini mungkin atau mungkin tidak dipengaruhi oleh pawang Anda. Anda mungkin perlu menggunakan atau menambahkan fungsi penangan lain untuk menguji panjangnya juga.

Jared Farrish
sumber
Saya menemukan jawaban ini berguna saat membatasi dalam fase input. Anda juga dapat membatasinya dalam fase validasi saat mengirimkan dan memunculkan pesan validasi menggunakan patternatribut. Lihat stackoverflow.com/questions/10281962/…
31

Cara termudah untuk melakukannya:

maxlength="5"

Jadi .. Menambahkan atribut ini ke kontrol Anda:

<input type="text" 
    id="sessionNo" 
    name="sessionNum" 
    onkeypress="return isNumberKey(event)" 
    maxlength="5" />
Nonim
sumber
8

Tambahkan yang berikut ini ke header:

<script language="javascript" type="text/javascript">
function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
}
</script>

    <input type="text" id="sessionNo" name="sessionNum" onKeyDown="limitText(this,5);" 
onKeyUp="limitText(this,5);"" />
b3verelabs
sumber
this.form.sessionNotampaknya sedikit tersangka. Kenapa tidak this? Juga, limitCountdan limitNumjuga tampak rusak / tidak perlu?
Jared Farrish
1
Diperbaiki. Melakukan cara ini jika Anda ingin membatasinya ke karakter atau angka tertentu yang Anda bisa, tetapi jika Anda tidak peduli tentang itu maka Panjang maks akan berfungsi dengan baik. Jadi katakanlah jika Anda ingin nilainya antara 1-50 Anda bisa atau semua angka positif, dll.
b3verelabs
this.form.sessionNosepertinya masih belum benar. thisdalam konteks itu akan menunjuk ke input, bukan document.
Jared Farrish
Masih tidak benar, itu tidak merujuk pada formkeduanya. thisadalah semua yang Anda butuhkan. Juga, secara teknis jika Anda ingin untuk referensi elemen oleh form, itu akan menjadi oleh ( form/ input) name, tidak id, yaitu: document.formName.sessionNum.
Jared Farrish
Benar Saya mengetik dengan cepat itu dibungkus dalam formulir sebelumnya. Tetapi Anda hanya akan meneruskan ref ke input ke dalam fungsi untuk mendapatkan nilai bidang saat ini lalu menambahkan logika apa pun yang Anda inginkan untuk membatasi bidang itu.
b3verelabs
8

Menurut w3c , nilai default untuk atribut MAXLENGTH adalah angka yang tidak terbatas. Jadi, jika Anda tidak menentukan jumlah maksimum, pengguna dapat memotong dan menempelkan Alkitab beberapa kali dan menempelkannya di formulir Anda.

Bahkan jika Anda menentukan MAXLENGTH ke angka yang wajar, pastikan Anda memeriksa ulang panjang data yang dikirimkan di server sebelum memproses (menggunakan sesuatu seperti php atau asp) karena cukup mudah untuk mengatasi batasan MAXLENGTH dasar.

Mahdi Jazini
sumber
1
@lopezdp, ada banyak cara untuk "mengatasi" pembatasan html / javascript. Cara termudah untuk memeriksa adalah membuka halaman Anda dengan Chrome, "memeriksa elemen", dan mengubah HTML secara manual. Cara yang lebih rumit untuk menyiasati - tulis skrip yang akan memposting data mengabaikan batasan apa pun (menggunakan perpustakaan curl atau yang serupa). Sebagai pengembang backend, Anda tidak boleh mempercayai validasi data frontend - semua aturan harus diduplikasi di server. Validasi frontend hanyalah cara untuk menghemat waktu bagi pengguna dengan menunjukkan kesalahan yang jelas tanpa membuat permintaan ke server.
Val Petruchek
4
<input type="text" maxlength="5">

jumlah huruf maksimal yang bisa di input adalah 5.

anonim
sumber
4

Sederhanakan

<input type="text" maxlength="3" />

dan gunakan peringatan untuk menunjukkan bahwa karakter maks telah digunakan.

pengguna5829707
sumber
3

Saya selalu melakukannya seperti ini:

$(document).ready(function(){
var maxChars = $("#sessionNum");
var max_length = maxChars.attr('maxlength');
if (max_length > 0) {
    maxChars.bind('keyup', function(e){
        length = new Number(maxChars.val().length);
        counter = max_length-length;
        $("#sessionNum_counter").text(counter);
    });
}
});

Memasukkan:

<input name="sessionNum" id="sessionNum" maxlength="5" type="text">
Number of chars: <span id="sessionNum_counter">5</span>
Sašo Krajnc
sumber
2

Panjang maksimal

Jumlah karakter maksimum yang akan diterima sebagai input. Atribut maxlength menentukan jumlah karakter maksimum yang diperbolehkan dalam elemen.

Maxlength W3 sekolah

<form action="/action_page.php">
    Username: <input type="text" name="usrname" maxlength="5"><br>
    <input type="submit" value="Submit">
</form>
Kondal
sumber
1

Anda dapat menggunakan <input type = "text" maxlength="9"> atau

<input type = "number" maxlength="9">untuk nomor atau <input type = "email" maxlength="9">untuk validasi email akan muncul

Pengembangan BKas
sumber
1
<input type="number" id="xxx" name="xxx" oninput="maxLengthCheck(this)" maxlength="10">

function maxLengthCheck(object) {
  if (object.value.length > object.maxLength)
  object.value = object.value.slice(0, object.maxLength)
}
P. Banerjee
sumber
0

Gunakan maxlenght = "jumlah karakter"

<input type="text" id="sessionNo" name="sessionNum" maxlenght="7" />
Rahul Jain
sumber
0

Kode berikut mencakup ...

var count = 1;

do {
    function count_down(obj, count){

    let element = document.getElementById('count'+ count);

    element.innerHTML = 80 - obj.value.length;

    if(80 - obj.value.length < 5){
        element.style.color = "firebrick";
    }else{
        element.style.color = "#333";
    }
}
count++;
} while (count < 20); 
.text-input {
    padding: 8px 16px;
    width: 50%;
    margin-bottom: 5px;
    margin-top: 10px;
    font-size: 20px;
    font-weight: 700;
    font-family: Raleway;
    border: 1px solid dodgerblue;
  }
<p><input placeholder="Title" id="bike-input-title" onkeyup="count_down(this, 3)" maxlength="80"  class="text-input" name="bikeTitle" ></p>
        <span id="count3" style="float: right; font-family: Raleway; font-size:20px; font-weight:600; margin-top:-5px;">80</span><br>

Eric Coetzee
sumber
-1
<input type="text" name="MobileNumber" id="MobileNumber" maxlength="10" onkeypress="checkNumber(event);"  placeholder="MobileNumber">

<script>
function checkNumber(key) {
  console.log(key);
  var inputNumber = document.querySelector("#MobileNumber").value;
  if(key.key >= 0 && key.key <= 9) {
    inputNumber += key.key;
  }
  else {
    key.preventDefault();
  }
}
</script>
Yash Patel
sumber