Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    23

    Contare i caratteri al NETTO degli SPAZI in una textarea

    Salve a tutti, scusate ragazzi ma ho bisogno del vostro aiuto:

    ho una textarea nella quale ci devono andare al max 2000 caratteri esclusi gli spazi ; in pratica se metto questa stringa:
    "Ciao a tutti", nel decrementare i caratteri disponibili non deve tener conto degli spazi inseriti.
    Come posso fare????
    io avevo trovato questo javascript che contava l'intera lunghezza della textarea, ma ovviamente inclusi gli spazi:


    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript" src="popup.js">
    </SCRIPT>

    <SCRIPT LANGUAGE="JavaScript">






    <!-- Begin
    function textCounter(field,cntfield,maxlimit) {
    if (field.value.length > maxlimit) // if too long...trim it!
    field.value = field.value.substring(0, maxlimit);
    // otherwise, update 'characters left' counter
    else
    cntfield.value = maxlimit - field.value.length;
    }
    // End -->
    </script>


    </head>

    <body>
    <form method=post action=file.php name=myForm>
    <textarea cols="100" rows="20" wrap="phisycal" name="testo" class="input"
    onKeyDown="textCounter(document.myForm.testo,docum ent.myForm.remLen1,2000)"
    onKeyUp="textCounter(document.myForm.testo,documen t.myForm.remLen1,2000)">
    </textarea>


    <center><input readonly type="text" name="remLen1" size="4" maxlength="4" value="2000">characters left</center>
    </form>
    </body>
    </html>


    Potete aiutarmi a modificare questo script???? Oppure con uno nuovo??
    Il problema di questo è che mi conta anche gli spazi; se fosse possibile vorrei mantenere questa impostazione di script, ma io (non essendo pratico di javascript) non sono riuscito a modificarlo per escludermi gli spazi.
    vi prego aiutatemi.........
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    311
    prova così:
    codice:
    function textCounter(field,cntfield,maxlimit) { 
      var str=field.value.replace(/ /g,"");
      if (str.length > maxlimit) // if too long...trim it! 
        field.value = field.value.substring(0, maxlimit); 
      // otherwise, update 'characters left' counter 
      else 
        cntfield.value = maxlimit - str.length; 
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    23
    grazie millè è ok!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    23

    Anzi proprio ok non lo è......................

    Quando incollo una stringa più lunga di 2000 caratteri ad esempio, la tronca molto prima del 2000° carattere per esempio:

    Stringa:
    "Quando incollo una stringa più lunga di 2000 caratteri ad esempio, la tronca molto prima del 2000° carattere per esempio.... "

    supponiamo che il 2000° carattere di quella stringa finisca con
    "caratt "

    lo script mi tronca la stringa a
    "Quando incollo una stringa più lunga di 2000 caratteri ad esempio, la " anzichè a

    "Quando incollo una stringa più lunga di 2000 caratteri ad esempio, la tronca molto prima del 2000° caratt" come sarebbe giusto.

    Cosa si puù fare????

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    311
    prova ora:
    codice:
    function textCounter(field,cntfield,maxlimit) { 
      var str=field.value.replace(/ /g,"");
      if (str.length > maxlimit) // if too long...trim it! 
        field.value = field.value.substring(0, maxlimit+field.value.length-str.length); 
      // otherwise, update 'characters left' counter 
      else 
        cntfield.value = maxlimit - str.length; 
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    23

    Grazie :) adesso va bene.......

    Un'ultima cosa, questo script sottrae due caratteri quando dò l'invio.....
    si può risolvere anche questo piccolo problema?????
    Oltre agli spazi non dovrebbe contarmi nemmeno gli a capo.

    Ti ringrazio tanto per il tuo aiuto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    311
    cambia questo
    codice:
    var str=field.value.replace(/[ \n\r]/g,"");

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    23

    Grazie.....un'ultimissima cosa......TI GIURO!!!

    Lo script è ok, è rimasto solo un piccolo problema, se per esempio tu copi da Word ad esempio, un testo con più di 2000 caratteri e lo incolli subito nella textarea, succede che il testo non lo taglia, ma lo lascia per come è stato incollato. Solo se inizi a muoverti all'interno della textarea allora lo script agisce nella sua funzione e taglia il testo in eccedenza.

    Mi chiedevo se era possibile far lavorare lo script subito, all'atto dell'incolla quando ti posizioni col mouse e col tasto dx fai incollare il testo sulla textarea.

    Io ho provato a mettere "onClick" e "onFocus" in aggiunta ai due "onKeyup" e "onKeydown", ma all'atto dell'incolla il testo rimane sempre lo stesso.Devo necessariamente muovermi all'interno della textarea per far togliere i caratteri in eccedenza....
    Possiamo fare qualcosa???
    A me serve che il testo venga tagliato all'istante, perchè altrimenti un utente che utilizza quel form mi può schiaffare lo stesso 100000 caratteri basta che copy il testo e lo incolli e non si muova all'interno della textarea.


    Comunque grazie infinite per il tuo aiuto.
    Sei stato molto gentile.


  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Istantaneamente la vedo dura... prova a richiamare il controllo anche su onmouseup e/o onblur

    Male che vada puoi provare anche gli altri eventi http://www.devguru.com/Technologies/...nthandler.html

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.