2012-05-06 18 views
9

Sto utilizzando un campo textarea in un modulo realizzato in html e l'elaborazione è eseguita da php. Voglio limitare il numero di caratteri che l'utente può inserire nella textarea. C'è un modo in cui questo può essere fatto perché il campo textarea viene quindi memorizzato in un database mysql e quindi devo limitare i dati utente in base al valore varchar del campo.come limitare il numero di caratteri in un campo textarea che elabora php?

Qualsiasi aiuto?

risposta

18

È possibile limitare questo attribuendo l'attributo maxlength sul tag textarea come <textarea maxlength="120"></textarea> in HTML e inoltre "taglia" la stringa di input in PHP tramite la funzione substr().

+0

grazie mille! Questo ha dato un'idea di come farlo! Fondamentalmente quello che mi ha confuso è stato impostare la lunghezza massima che hai appena suggerito come può essere utilizzato! – user1373168

+0

presumibilmente non funziona in IE –

+0

Funziona solo su IE10 +, Firefox, Chrome, Safari. Ma non l'Opera. – Napolux

8

Come menzionato da s.webbandit è possibile utilizzare maxlength, ma si noti che questa è una nuova funzionalità introdotta in HTML5, come W3 Schools article su <textarea>, quindi la soluzione "a prova di proiettile" ha bisogno di Javascript. Quindi maxlength è non supportato in Internet Explorer fino alla versione 10 e in Opera non lo è affatto.

Ecco un approccio che utilizza Javascript per aiutarvi:

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

È quindi possibile utilizzare in questo modo (original source):

<textarea name="limitedtextarea" onKeyDown="charLimit(this.form.limitedtextarea,this.form.countdown,100);"> 
    </textarea> 

Questo dovrebbe farti andare.

+0

Si ha un errore di denominazione della funzione nell'attributo onKeyDown, "charLimiti" deve essere "charLimit" – thechrishaddad

1

Ho provato un sacco di modi diversi per limitare il testo nelle aree di testo, e il migliore che ho trovato (lato client) è con il plugin jQuery.Maxlength.js. Semplice veloce e li copre tutti!

Fase 1. Includere Maxlength script di plug

<script language="javascript" src="jquery.maxlength.js"></script> 

Fase 2. Aggiungere l'attributo maxlength a

<textarea maxlength="35" 
    rows="5" cols="30" name="address"></textarea> 

Fase 3. Inizializzare plug

<script type="text/javascript"> 
    $(document).ready(function($) { 
      //Set maxlength of all the textarea (call plugin) 
      $().maxlength(); 
    }) 
</script> 

https://github.com/viralpatel/jquery.maxlength

4

Questo è un modo molto semplice per limitare la lunghezza di un'area di testo tramite JavaScript.

campo area di testo:

<input class='textField' type='text' NAME='note1' value='' onkeyup='charLimit(this, 40);'> 

funzione JavaScript:

function charLimit(limitField, limitNum) { 
    if (limitField.value.length > limitNum) { 
    limitField.value = limitField.value.substring(0, limitNum);} 
} 

Quando l'utente digita ultimi 40 caratteri li rimuove appena.

0
<script type="text/javascript"> 
     $(document).ready(function(){ 
     var maxChars = $("#sessionNumtext"); 
     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); 
      }); 
     } 
    }); 
</script> 

<textarea name="sessionNumtext" id="sessionNumtext" maxlength="20" type="text"></textarea> 
kalan karakter sayısı: <span id="sessionNum_counters">20</span> 
+1

Sarebbe meglio fornire anche dettagli, spiegazioni, ecc. Non solo codice. Solo un pensiero :) –

Problemi correlati