Limita il numero di caratteri consentiti nel campo di testo di input del modulo


115

Come posso limitare o limitare l'utente a inserire solo un massimo di cinque caratteri nella casella di testo?

Di seguito è riportato il campo di input come parte del mio modulo:

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

Sta usando qualcosa come maxSize o qualcosa del genere?


16
Ecco la <input type="text" maxlength="5"> demo live: jsfiddle.net/mcBbW/1
Šime Vidas

Risposte:


174

maxlength :

Il numero massimo di caratteri che verranno accettati come input. Può essere maggiore di quello specificato da SIZE, nel qual caso il campo scorrerà in modo appropriato. L'impostazione predefinita è illimitata.

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

Tuttavia, questo può o non può essere influenzato dal gestore. Potrebbe essere necessario utilizzare o aggiungere un'altra funzione del gestore per testare anche la lunghezza.


Ho trovato questa risposta utile quando si limita la fase di immissione. Puoi anche limitarlo nella fase di convalida durante l'invio e visualizzare un messaggio di convalida utilizzando l' patternattributo. Vedere stackoverflow.com/questions/10281962/...

31

Il modo più semplice per farlo:

maxlength="5"

Quindi ... Aggiungendo questo attributo al tuo controllo:

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

8

Aggiungi quanto segue all'intestazione:

<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);"" />

this.form.sessionNosembra un po 'sospetto. Perché non solo this? Inoltre, limitCounte limitNumsembrano anche fuori servizio / inutili?
Jared Farrish

1
Corretto. In questo modo, se volessi limitarlo a determinati caratteri o numeri, potresti farlo, ma se non ti interessa, Max Length funzionerebbe bene. Quindi dì se vuoi che i valori siano compresi tra 1 e 50 potresti o tutti i numeri positivi, ecc.
b3verelabs

this.form.sessionNoancora non mi sembra giusto. thisin quel contesto punterà al input, not document.
Jared Farrish

Ancora non corretto, non fa riferimento a formnessuno dei due. thisé tutto quello di cui hai bisogno. Inoltre, tecnicamente se mancavano di riferimento all'elemento dal form, sarebbe da ( form/ input) name, non id, cioè: document.formName.sessionNum.
Jared Farrish

Corretto Ho digitato per digiunare prima era avvolto nel modulo a. Ma dovresti semplicemente passare il riferimento all'input nella funzione per ottenere il valore corrente del campo, quindi aggiungere la logica che desideri limitare quel campo.
b3verelabs

8

Secondo w3c , il valore predefinito per l'attributo MAXLENGTH è un numero illimitato. Quindi, se non specifichi il massimo, un utente potrebbe tagliare e incollare la Bibbia un paio di volte e incollarla nel tuo modulo.

Anche se specifichi MAXLENGTH su un numero ragionevole, assicurati di ricontrollare la lunghezza dei dati inviati sul server prima dell'elaborazione (usando qualcosa come php o asp) poiché è abbastanza facile aggirare comunque la restrizione MAXLENGTH di base


1
@lopezdp, ci sono diversi modi per "aggirare" le restrizioni html / javascript. Il modo più semplice da controllare è aprire la pagina con Chrome, "ispezionare elemento" e modificare manualmente l'HTML. Il modo più elaborato per spostarsi: scrivi uno script che pubblichi i dati ignorando qualsiasi restrizione (usando la libreria curl o qualcosa di simile). In qualità di sviluppatore back-end, non dovresti mai fidarti della convalida dei dati dal front-end: tutte le regole dovrebbero essere duplicate sul server. La convalida del frontend è solo un modo per risparmiare tempo per l'utente puntando a errori evidenti senza fare una richiesta al server.
Val Petruchek

4
<input type="text" maxlength="5">

il numero massimo di lettere che può essere inserito è 5.


4

Rendilo più semplice

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

e utilizza un avviso per mostrare che sono stati utilizzati max chars.


3

Lo faccio sempre così:

$(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);
    });
}
});

Ingresso:

<input name="sessionNum" id="sessionNum" maxlength="5" type="text">
Number of chars: <span id="sessionNum_counter">5</span>

2

Lunghezza massima

Il numero massimo di caratteri che verranno accettati come input. L'attributo maxlength specifica il numero massimo di caratteri consentiti nell'elemento.

Scuole Maxlength W3

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

1

Puoi usare <input type = "text" maxlength="9"> o

<input type = "number" maxlength="9">per i numeri o <input type = "email" maxlength="9">per la convalida e-mail verrà visualizzato


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)
}

0

Usa maxlenght = "numero di caratteri"

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

0

Il codice seguente include un conteggio ...

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>


-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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.