conta caratteri da blog.mrwebmaster.it

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
ho letto il buon articolo di max
http://blog.mrwebmaster.it/2010/12/...ll'interno-di-una-textarea-usando-jquery.html
che da un metodo molto +migliore del classico uso solo di js.
il mio problema è sempre stato quello di limitare il numero di caratteri ma anche gli a cap (o fine linea o enter) perchè
un utente in vena di scherzi (se il limite di caratteri è 500 potrebbe inviarmi 250 a seguite da un enter.
dopo vari tentativi sono riuscito a contare le righe (fn o cr) e se superate a dare l'avviso.
se a qualcuno interessa questo è quello che ho fatto, ma visto che in js sono imbranato se qualcuno riesce a migliorarlo benvenga (e lo posti)

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza capo ne coda</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	//test di verifica
	echo "<h2>".nl2br($_POST['pinco'])."</h2>";
}
?>
<p></p>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
	<p>Digita il tuo messaggio:<br/> 
	<textarea cols="50" id="msg" name="pinco"></textarea>
	</p>
	<p>
	<span id="conteggio"></span>
	</p>
	<input name="invia" type="submit" id="invia" value="Invia">
</form>
<script type="text/javascript">
// avvio il controllo all'evento keyup
$('textarea#msg').keyup(function() {
	// definisco il limite massimo di caratteri   
	var limite = 20; //numero massimo di caratteri ammessi
	var limite_righe = 3; //numero massimo di righe ammesse
	var quanti = $(this).val().length;
	//esplodo il testo in un array
	var righe_n = $(this).val().split('\n');//fine linea
	var righe_r = $(this).val().split('\r');//return
	//conto quanti sono i valori dei due array la somma mi da il numero di righe
	var quanterighe = righe_n.length+righe_r.length-1;
	//visualizzo il conteggio
	$('span#conteggio').html(quanti + ' di ' + limite + ' caratteri ammessi '+quanterighe+' righe di '+limite_righe+' ammesse');
	if(quanti >= limite || quanterighe > limite_righe) {
		if(quanterighe > limite_righe) {
			//visualizzo il messaggio righe in eccesso
			$('span#conteggio').html('<strong>Non puoi inserire più di '+limite_righe+' righe</strong>');
			//cerco l'ultima occorrenza di \n o \r
			var t_n=$(this).val().lastIndexOf('\n');
			var t_r=$(this).val().lastIndexOf('\r');
			//scelgo la maggiore
			//e l'attribuisco alla variabile con cui andrò a tagliare il testo
			if(t_n > t_r){
				var taglio = t_n;
			}else{
				var taglio = t_r;
			}
		}else{//il numero di righe non è superato, ma il numero caratteri sì
			//visualizzo il messaggio caratteri in eccesso
			$('span#conteggio').html('<strong>Non puoi inserire più di ' + limite + ' caratteri</strong>');     
			//attribuisco alla variabile il limite di caratteri
			var taglio = limite;
		}    
	// taglio il contenuto per il numero massimo di caratteri ammessi o per l'ultima occorrenza di \n o \r   
	var $contenuto = $(this).val().substr(0,taglio);        
	$('textarea#msg').val($contenuto);   } }); 
</script> 
</body>
</html>
 

Discussioni simili