Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227

    Countdown di caratteri di una textarea

    ciao a tutti da un neofita di js.

    Mi potete spiegare il funzionamento/ruolo in Countdown di caratteri di una textarea
    del funzionamento della favChange() e dei seguenti funzioni/variabili/metodi:

    - document.newMsg.favs.selectedIndex
    - document.newMsg.msgTo.focus()
    - supportsKeys

    e del ruolo di:
    -lenSSig
    -lenLSig
    -lenSysSig

    <input TYPE="HIDDEN" name="lenSSig" value="0">
    <input TYPE="HIDDEN" name="lenLSig" value="0">
    <input TYPE="HIDDEN" name="lenSysSig" value="0">


    Mi serve per poter modificare lo script affinchè il countdown venga eseguito non su una textarea, ma su qualsiasi gruppo di elementi di input posto in una form (tag input, tag texarea), la cui somma delle singole dimensioni di stringhe inserite in ciascuno di essi deve essere limitata.

    Grazie
    ciao
    Eng

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma non so dirti il perché è stato sviluppato cosi, comunque se vuoi contare i caratteri di una textarea e inputext questo va benissimo:
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    function ContaLettere(input,maxletter,restante){
    var restano = maxletter-document.getElementById(input.id).value.length
    document.getElementById(restante).innerHTML=restano
    }
    </script>
    <style>
    #NumeroTextArea{
    	background:pink;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    	margin-bottom: 10px;
    }
    #NumeroText
    {
    	background:lightgreen;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    }
    </style>
    </head>
    <body>
    <form id="esempio" name="esempio">
    <textarea name="TextArea" id="TextArea" onkeyup="ContaLettere(this,200,'NumeroTextArea')" cols="50" rows="5"></textarea>
    <div id="NumeroTextArea">200</div>
    <input name="Text" id="Text" onkeyup="ContaLettere(this,200,'NumeroText')" size="66">
    <div id="NumeroText">200</div>
    </form>
    </body>
    </html>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    grazie.
    il tuo coadice è veramente leggibile!
    Propongo al moderatore, col tuo permesso, di porrre il tuo script nella pagina della guida sopra menzionata.

    Posterò a breve la modifica al mio scopo

  4. #4
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    Help! Ho modificato lo script, ma l'ultimo display non viene aggiornato.
    Che errore commetto ?

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    function ContaLettere(input,maxletter,restante){
    var restano = maxletter-document.getElementById(input.id).value.length
    document.getElementById(restante).innerHTML=restano
    }
    function ContaLettereTotale(input1,input2,maxletter,restante){
    var restano = maxletter-document.getElementById(input1.id).value.length-document.getElementById(input2.id).value.length
    document.getElementById(restante).innerHTML=restano
    }
    </script>
    <style>
    #NumeroTextArea{
    	background:pink;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    	margin-bottom: 10px;
    }
    #NumeroText
    {
    	background:lightgreen;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    }
    #NumeroTotale
    {
    	background:yellow;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    }
    </style>
    </head>
    <body>
    <form id="esempio" name="esempio">
    <textarea name="TextArea" id="TextArea" onkeyup="ContaLettere(this,200,'NumeroTextArea');ContaLettereTotale(this,'Text',400,'NumeroTotale');" cols="50" rows="5"></textarea>
    <div id="NumeroTextArea">200</div>
    <input name="Text" id="Text" onkeyup="ContaLettere(this,200,'NumeroText');ContaLettereTotale(this,'TextArea',400,'NumeroTotale');" size="66">
    <div id="NumeroText">200</div>
    <div id="NumeroTotale">400</div>
    </form>
    </body>
    </html>

  5. #5
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    Ad ogni modo non c'e' nessuno che possa spiegarmi anche come funziona quello script che ho postato all'inizio del thread e che riporto di seguito ? Mi piace CAPIRE.
    tnx

    Countdown di caratteri di una textarea
    del funzionamento della favChange() e dei seguenti funzioni/variabili/metodi:

    - document.newMsg.favs.selectedIndex
    - document.newMsg.msgTo.focus()
    - supportsKeys

    e del ruolo di:
    -lenSSig
    -lenLSig
    -lenSysSig

    <input TYPE="HIDDEN" name="lenSSig" value="0">
    <input TYPE="HIDDEN" name="lenLSig" value="0">
    <input TYPE="HIDDEN" name="lenSysSig" value="0">


    Mi serve per poter modificare lo script affinchè il countdown venga eseguito non su una textarea, ma su qualsiasi gruppo di elementi di input posto in una form (tag input, tag texarea), la cui somma delle singole dimensioni di stringhe inserite in ciascuno di essi deve essere limitata.

    Grazie
    ciao
    Eng

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non devi raddopiare la funzione ContaLettere(input,maxletter,restante) altrimenti va in errore, come nel mio esempio una funzione richiama dal oggetto, gli oggetti o input possono essere quanti vuoi, chiaramente mantenendo la logica (un input un suo contatore).
    Per quanto concerne la spiegazione, non predertela male ma il forum va concepito come una risorsa per risolvere un problema non per fare da tutor, oltre tutto secondo me nello script ci sono degli errori, per tanto prima dovresti correggere lo script poi spiegarlo, solo per sopperire ad una tua curiosità, se proprio vuoi approfondire comprati un buon libro.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    Originariamente inviato da cavicchiandrea
    Non devi raddopiare la funzione ContaLettere(input,maxletter,restante) altrimenti va in errore, come nel mio esempio una funzione richiama dal oggetto, gli oggetti o input possono essere quanti vuoi, chiaramente mantenendo la logica (un input un suo contatore).
    spiegazione molto sintetica: il mio script deve riportare un testo display con la somma dei caratterei rimanenti dei primi due. Non di un terzo open field.

    Originariamente inviato da cavicchiandrea
    Per quanto concerne la spiegazione, non predertela male ma il forum va concepito come una risorsa per risolvere un problema non per fare da tutor, oltre tutto secondo me nello script ci sono degli errori, per tanto prima dovresti correggere lo script poi spiegarlo, solo per sopperire ad una tua curiosità, se proprio vuoi approfondire comprati un buon libro.
    c
    si vede proprio che non l'hai fatto girare. Funziona eccome e voglio capire come. :master:
    Di libri di Js ne ho parecchi, il tempo di ricercare quelle funzioni su un libro non lo spreco. la probabilità di trovare quelle, molto evolute, è nulla.
    Addirittura ho difficoltà a trovare un commento su web, ma vedo da google che favChange() è molto utilizzata.

    Ad ogni modo il forum è qui per chi vuole imparare e risolvere i propri errori.
    Dal regolamento si legge "Il forum di HTML.it è un punto di incontro e confronto democratico su temi legati al Web publishing."

    Io chiedo un confronto con chi ha tempo e voglia fornirmelo.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Vedo che non ci capiamo, preferisco lasciare ad altri il confronto oltre tutto + esperti di me sulla teoria, ti auguro comunque di risolvere.
    Saluti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    ecco il codice funzionante
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    function ContaLettere(input,maxletter,restante){
    var restano = maxletter-document.getElementById(input.id).value.length
    document.getElementById(restante).innerHTML=restano
    }
    
    
    function calcola_resto(){
    var maxlength = 400
    one = document.getElementById('TextArea').value.length;
    two = document.getElementById('Text').value.length; 
    document.getElementById('Resto').value = maxlength - (one * 1) - (two * 1);
    document.getElementById('NumeroResto').innerHTML = maxlength - (one * 1) - (two * 1);
    }
    
    
    </script>
    <style>
    #NumeroTextArea{
    	background:pink;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    	margin-bottom: 10px;
    }
    #NumeroText
    {
    	background:lightgreen;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    }
    #NumeroTotal
    {
    	background:yellow;
    	font-size:30px;
    	font-weight:bold;
    	color:black;
    	padding:10px;
    	width: 405px;
    	margin-top: 10px;
    }
    </style>
    </head>
    <body>
    <form id="esempio" name="esempio">
    <textarea name="TextArea" id="TextArea" onkeyup="ContaLettere(this,200,'NumeroTextArea');calcola_resto();" cols="50" rows="5"></textarea>
    <div id="NumeroTextArea">200</div>
    <input name="Text" id="Text" onkeyup="ContaLettere(this,200,'NumeroText');calcola_resto();" size="66">
    <div id="NumeroText">200</div>
    <input type="Text" id="Resto" size="2" disabled>
    <div id="NumeroResto">400</div>
    </form>
    </body>
    </html>
    ora devo vedere come porre i limiti alle dimensioni totali

  10. #10
    Utente di HTML.it L'avatar di eng
    Registrato dal
    Mar 2002
    Messaggi
    1,227
    Ho modificato lo script come segue.
    Il problema che riscontro adesso è il non funzionamento dello script di aggiornamento dell'ultimo campo che dovrebbe conteggiare la somma dei caratteri rimanenti di entrambi i campi.
    Che errore commetto ?
    tnx and happy n.y.
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Form con limitazione delle dimensioni massime</title>
    <script type="text/javascript">
    var ns6=document.getElementById&&!document.all
    function restrictinput(maxlength,e,placeholder){
    if (window.event&&event.srcElement.value.length>=maxlength)
    return false
    else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
    var pressedkey=/[a-zA-Z0-9\.\,\/]/
    if (pressedkey.test(String.fromCharCode(e.which)))
    e.stopPropagation()
    }
    }
    function countlimit(maxlength,e,placeholder){
    var theform=eval(placeholder)
    var lengthleft=maxlength-theform.value.length
    var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
    if (window.event||e.target&&e.target==eval(placeholder)){
    if (lengthleft<0)
    theform.value=theform.value.substring(0,maxlength)
    placeholderobj.innerHTML=lengthleft
    }
    }
    function displaylimit(theform,thelimit){
    var limit_text='<span id="'+theform.toString()+'">'+thelimit+'</span> caratteri rimanenti'
    if (document.all||ns6)
    document.write(limit_text)
    if (document.all){
    eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}
    eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform)}
    }
    else if (ns6){
    document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true); 
    document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true); 
    }
    }
    function ContaLettere(input,maxletter,restante){
    var restano = maxletter-document.getElementById(input.id).value.length
    document.getElementById(restante).innerHTML=restano
    }
    function calcola_resto(){
    var maxlength = 400
    one = document.getElementById('TextArea').value.length;
    two = document.getElementById('Text').value.length; 
    document.getElementById('Resto').value = maxlength - (one * 1) - (two * 1);
    document.getElementById('NumeroResto').innerHTML = maxlength - (one * 1) - (two * 1);
    }
    </script>
    </head>
    <body>
    <form id="esempio" name="esempio">
    <textarea name="TextArea" id="TextArea" onkeyup="calcola_resto()" class="box" cols="50" rows="5"></textarea>
    
    <script>displaylimit("document.esempio.TextArea",200)</script>
    
    
    <input name="Text" id="Text" onkeyup="calcola_resto()" size="66" class="box">
    
    <script>displaylimit("document.esempio.Text",200)</script>
    
    
    <input type="Text" id="Resto" size="2" disabled>
    <div id="NumeroResto">400</div>
    </form>
    </body>
    </html>

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.