Visualizzazione risultati 1 fino 19 di 19

Discussione: Script per contare i caratteri in una textarea

  1. #1
    Guest

    Predefinito Script per contare i caratteri in una textarea

    salve gente.
    pensavo fosse semplice, sto impazzendo.

    come cavolo si fa a fare uno script che conteggi le lettere in una textarea e le visualizzi in un campo esterno?
    Codice:
    function cont(id,formz){
    	var maxchar = 50;
    	var form = getElementById(formz);
    	var str = document.form.getElementById(id).value;
    	alert(""+str);
    	var str2
    	var len = str.length;alert("LEN:"+document.getElementById(id).value.length);
    	document.getElementById("Cont_"+id).value = maxchar - len;
    	if((maxchar - len) == 0){
    		alert("Hai raggiunto il limite massimo di caratteri inseribili.");
    		}
    	
    }

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ora scoprirai che il tuo è davvero un errore subdolo... per trovare la lunghezza di una stringa devi usare il metodo (ha le parentesi, non è una variabile) length, così:
    Codice:
    var str = "Hello, World!";
    var len = str.length (); // len ora vale 13
    Stai tranquillo, è un errore che capita a molti...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    niente non va :(
    Codice:
    function cont(id){
    	var maxchar = 50;
    	var str = document.getElementById(id).value;
    	var len = str.length();
    	document.getElementById("Cont_"+id).value = maxchar - len;
    	if((maxchar - len) == 0){
    		alert("Hai raggiunto il limite massimo di caratteri inseribili.");
    		}
    	
    }

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ti viene segnalato che il JavaScript contiene errori (su Firefox esiste la Console JavaScript, per IE la barra di stato scrive "Errori nella visualizzazione della pagina") per caso? Perché a vedere il codice non sembra sbagliato...

    In alternativa, hai l'esempio caricato in rete? Link?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    uno la console degli errori.

    mi dice che
    Codice:
    function cont(id){
    	var maxchar = 50;
    	var str = document.getElementById(id).value;
    	var len = str.length(); //<-- HAS NO PROPERTIES
    	document.getElementById("Cont_"+id).value = maxchar - len;
    	if((maxchar - len) == 0){
    		alert("Hai raggiunto il limite massimo di caratteri inseribili.");
    		}
    	
    }
    ti ho segnato la riga di codice che da errore.

    grazie

  6. #6
    Guest

    Predefinito

    Prova così:

    Codice HTML:
    function cont(field,maxlength,id){
    var totalLength = field.value.length; 
    if(totalLength >= maxlength) {
    field.value = field.value.substring(0, maxlength);
    alert("Hai raggiunto il limite massimo di caratteri inseribili."); }
    }
    E sulla textarea metti questo:

    Codice HTML:
    <textarea id="testo" onkeyup="cont(this, 350, 'testo');" onpaste="cont(this, 350, 'testo');"></textarea>
    e poi gli attributi che ci stavano...

    Qui il numero limite dei caratteri è 350, ma lo puoi cambiare.


    Funziona così?


    Ciao...

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da heidi52 Visualizza messaggio
    Prova così:

    Codice HTML:
    function cont(field,maxlength,id){
    var totalLength = field.value.length; 
    if(totalLength >= maxlength) {
    field.value = field.value.substring(0, maxlength);
    alert("Hai raggiunto il limite massimo di caratteri inseribili."); }
    }
    E sulla textarea metti questo:

    Codice HTML:
    <textarea id="testo" onkeyup="cont(this, 350, 'testo');" onpaste="cont(this, 350, 'testo');"></textarea>
    e poi gli attributi che ci stavano...

    Qui il numero limite dei caratteri è 350, ma lo puoi cambiare.


    Funziona così?


    Ciao...
    allora intanto grazie mille per l'aiuto.
    lo script funziona.
    c'è solo un'ultima modifica che non riesco a fare.
    vorrei che un contatore aggiornasse il valore di caratteri residui decrescendo.
    avevo aggiunto:
    Codice:
    	var campo =" Cont_"+field;
    	campo.value = maxlength - totalLength;
    ma non funziona...
    mi serve un nome che incrementa, poichè i form sono costruiti dinamicamente in php e dunque il campo contatore, ovvero quello in cui dovrebbe essere visualizzato il numero che descresce, cambia ogni volta.

    semplicemente io vorrei che in Cont_numero mostrasse dinamicamente il numero che descresce..
    non chiedo molto.. ma non ci riesco!
    e si che ho creato un altro script in cui invece ci riesco!

    ODIO JAVASCRIPT!

    ciao ciao

  8. #8
    Guest

    Predefinito

    Non ho capito, tu vuoi inserire un numero che indica i caratteri restanti dal limite?


    Ciao...

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da heidi52 Visualizza messaggio
    Non ho capito, tu vuoi inserire un numero che indica i caratteri restanti dal limite?


    Ciao...
    si :)
    la sintesi non è una delle mie doti ;)

  10. #10
    Guest

    Predefinito

    Allora sostituisci il codice che ti ho dato prima con questo:


    questo nella head:

    Codice HTML:
    window.onload = init;
    function init() { document.getElementById('countArea').innerHTML = 350-document.getElementById('text').value.length; 
    } 
    function updateCounter(field,maxlength,id,counter) {
    var totalLength = field.value.length; 
    if(totalLength >= maxlength) {
    field.value = field.value.substring(0, maxlength);
    }
    document.getElementById(counter).innerHTML = maxlength-field.value.length;
    }

    metti questo dove vuoi che appaia il numero dei caratteri restanti:
    Codice HTML:
    <span id="countArea"></span>
    e questo è il codice della textarea (poi puoi aggiungere anche altri attributi):
    Codice HTML:
    <textarea id="text" name="text" cols="50" rows="8" wrap="soft" onkeyup="updateCounter(this, 350, 'text', 'countArea');" onpaste="updateCounter(this, 350, 'text', 'countArea');">
    Come ho detto prima il limite dei caratteri è 350, ma lo puoi cambiare.

    Fammi sapere se funziona o no...


    Ciao...
    Ultima modifica di heidi52 : 14-03-2008 alle ore 15.59.53

  11. #11
    Guest

    Predefinito

    EDIT: ho capito ora la funzione un pò meglio. funziona esattamente come volevo, cioè ogni form ha i suoi cambiamenti.
    non ho capito a che serve la init(), ma non ho dovuto toccare nulla per farla fungere! :D

    grazie.
    Ultima modifica di lsdforum : 14-03-2008 alle ore 15.51.39

  12. #12
    Guest

    Predefinito

    La funzione init() è quella che ti mostra i caratteri restanti, e c'è la funzione perché ogni caricamento della pagina deve già mostrare il numero... capito?


    Ciao...

  13. #13
    Guest

    Predefinito

    ah ok.
    ma non capisco cmq.
    quella funzione invoca degli elemtni "text" e countarea, che NON esistono piu nella pagina. perchè io creo dinamicamente counArea_XX e text_XX.. lo script conta bene cmq...

    però in effetti, se resetto il form, il numerillo non ritorna a 50..

    sono dubbioso :)

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da lsdforum Visualizza messaggio
    però in effetti, se resetto il form, il numerillo non ritorna a 50..
    Ma lo sai perché?

    Perché se lo fai manualmente a cancellare i caratteri, javascript ti riconosce, perché onkeyup e onpaste significano "ogni tasto premuto" e "ogni cancellazione di carattere" manualmente, invece con il reset del form non è manualemte ma automatico, e lì se lo vuoi devi mettere un timeout

    Ciao...

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da heidi52 Visualizza messaggio
    Ma lo sai perché?

    Perché se lo fai manualmente a cancellare i caratteri, javascript ti riconosce, perché onkeyup e onpaste significano "ogni tasto premuto" e "ogni cancellazione di carattere" manualmente, invece con il reset del form non è manualemte ma automatico, e lì se lo vuoi devi mettere un timeout

    Ciao...
    due cose ti chiedo allora:

    1) posso cancellare la init()? tanto da solo degli errori ma non serve a nulla, visto che non inizializza alcun oggetto realmente esistente.
    2) come si fa la cosa del timeout per resettare?

    grazie.

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da lsdforum Visualizza messaggio
    due cose ti chiedo allora:

    1) posso cancellare la init()? tanto da solo degli errori ma non serve a nulla, visto che non inizializza alcun oggetto realmente esistente.
    2) come si fa la cosa del timeout per resettare?

    grazie.

    1) Dov'è che la init() dà errore?


    Ciao...

  17. #17
    Guest

    Predefinito

    Errore: document.getElementById("text") has no properties
    File sorgente: http://localhost/galleria/galleria.php?id_a=5#
    Riga: 41
    proprio perchè non esiste alcun campo text nella mia pagina :D

  18. #18
    Guest

    Predefinito

    Hai cambiato il codice della textarea?


    Ciao...

  19. #19
    Guest

    Predefinito

    ovviamente si :)
    a me serve un nome specifico incrementale :)
    non può esistere solo un campo statico monouso :)
    ma non mi pare un prlbme avisto che in FF funziona tutto :)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •