Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Svuotare textarea su pressione di INVIO

    Ciao,
    vorrei svuotare una textarea alla pressione del tasto invio.
    La cosa appare di facile realizzazione, anzi banale pensando alle 3 righe di codice necessarie.

    MA il problema è che la textarea si svuota solo parzialmente: un carriage return infatti resta sempre dentro.

    codice:
    <script language="javascript" type="text/javascript">
    <!--
    function captureEnter(e) {
    	e = e || window.event;
    	if (e.keyCode == 13) {
    		document.getElementById('ciao').value = '';
    	}
    }
    //-->
    </script>
    <textarea id="ciao" onkeydown="captureEnter(event);" style="height: 300px;"></textarea>
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    devi rimuovere l' azione di dafault per l' evento, aggiungendo
    codice:
    		if(e.preventDefault) e.preventDefault();
    		else e.returnValue=false;
    dopo
    document.getElementById('ciao').value = '';

    ciao

  3. #3
    Questo è il meglio che sono riuscito a fare:
    codice:
    <script language="javascript" type="text/javascript">
    <!--
    function captureEnter(e, obj) {
    	var e = e || window.event;
    	if (e.which == 13 || e.keyCode == 13) {
    	if(e.preventDefault) e.preventDefault();
    	else e.returnValue == false;
    		obj.value = "";
    		obj = obj.parentNode.appendChild(obj);
    		obj.focus();
    	}	
    }
    //-->
    </script>
    <textarea id="ciao" onkeydown="captureEnter(event, this);" style="height: 300px;"></textarea>
    I problemi sono 2:
    - la textarea dovrebbe stare in un box che contiene solo la textarea, o almeno la textarea deve essere l'ultimo figlio di questo.
    - in IE il focus non funziona ( onestamente non capisco il perchè ) e l'utente dovrà cliccare nuovamente sulla textarea.

    A questo punto potresti prendere in considerazione la possibilità di ricreare la textarea di nuovo usando ad esempio innerHTML.

  4. #4
    Originariamente inviato da Xinod
    devi rimuovere l' azione di dafault per l' evento, aggiungendo
    codice:
    		if(e.preventDefault) e.preventDefault();
    		else e.returnValue=false;
    dopo
    document.getElementById('ciao').value = '';

    ciao
    A me con IE6 non ha effetto.

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    qui funge anche su IE7 e 6 (in emulazione)

    non e' che per caso provavi gia' con questa svista che hai trascritto anche nel tuo codice?
    mi riferisco a: else e.returnValue == false;

  6. #6
    Ecco perchè non funzionava... Chiedo scusa

  7. #7
    Sì, anche a me la soluzione di Xinod ha funzionato da subito su MSIE 6 e mi chiedevo se ci fossero incompatibilità di sorta...
    Stavo chiedendo a più persone di testarlo sui loro client.

    La soluzione di distruggere e ricostruire l'oggetto textarea via DOM l'avevo già fatta anche io ma mi sembrava troppo macchinosa e avevo sperato che quella più semplice di Xinod bastasse.

    Grazie a entrambi


    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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 © 2026 vBulletin Solutions, Inc. All rights reserved.