Newsgroup: it.comp.lang.javascript
Titolo: Intercettare l'enter

Sto facendo un piccolo e semplicissimo editor WYSIWYG...
E' possibile, ad esempio in una TEXTAREA "intercettare" il tasto premuto
e verificando che sia l'enter (\n) sostituirlo con un <BR>???
Meglio ancora sarebbe intercettare un ALT+ENTER in modo da lasciare
all'enter il suo reale scopo... avete qualche idea?
Grazie mille.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

onkeypress='if (event.keyCode==13) {//aggiungi alla textarea
<br>;event.keyCode=0}'

 <br>;event.keyCode=0}'
Umh... grazie, ma credo non vada bene... 
in questo modo io il <BR> lo posso aggiungere solo in coda al value
della TEXTAREA e non dove si trova il cursore (cosa che credo sia
impossibile da conoscere)...
Capito il problema infame? :o(
Io devo far credere al browser che l'utente abbia digitato <BR> al posto
di Enter (o meglio ALT+ENTER)


 di Enter (o meglio ALT+ENTER)
E questo lo puoi fare. Ma non nella posizione corrente (almeno, non per
tutti i browser).
In effetti dovrei studiarmi un po' Mozilla e' NN6/7.. purtroppo non ho
ancora trovato una documentazione fatta bene.
Magari un escamotage si trova.
--------------------------------
Inviato via 
http://usenet.libero.it

io ho fatto 2 test (scatenando l'evento onkeypress e forzando event), ma
event risulta nullo...
non ho trovato soluzione (cercavo un modo per inserire nel buffer di
tastiera un carattere, speravo appunto di poterlo fare con event ma non mi
funzia...)
Ho guardato velocemente documentazione IE su textrange, insertAdjacentText
etc ma nulla che possa servire
Se trovi una soluzione facce sapè (non che mi serva, ma sono curioso)

 Se trovi una soluzione facce sapè (non che mi serva, ma sono curioso)
Su IE il problema non si pone (almeno, su IE/Win, e' da anni che ho risolto
la cosa.. non so IE/Mac come gestisce il textrange), il problema e' renderlo
cross-browser.
NN6.1 mi pare che abbia implementato delle funzioni (non documentate, tanto
per cambiare.. bah) che funzionano sulla selezione in modo egregio, ma SOLO
negli input text, pare e non su textarea (assurdo, avrei preferito il
contrario).
Bisognerebbe vedere Mozilla 1 e NN7 che dicono.


Sì, è per un content managment interno, quindi mi basta la compatibilità
con IE... anche perchè con tutta la "rumenta" che c'ho messo penso che
su MAC e Netscape non ci siano speranze che funzioni...
Ad ogni modo... come si fa su IE???


 Ad ogni modo... come si fa su IE???
Non e' uno script immediato come il precedente.
Devi giocare con il metodo createRange() e selection di IE. La
documentazione a riguardo la trovi sull'MSDN:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtmlrefs.asp


Arghhh.... non mi odiare, ma mi sa che non ci siamo capiti...
Allora, la gestione della selezione mi č chiara... 
ad esempio nella mia TEXTAREA, se selezioni un testo e premi un bottone
te lo mette tra <B>testo</B>... quindi qua ci siamo...
Il mio problema č inserire un testo nel punto in cui si trova il cursore
senza che sia stata effettuata nessuna selezione!
A tal proposito ho avuto due idee:
1) Intercettare il tasto premuto e sostituirlo con <BR>.
2) Capire dove si trova il cursore e modificare di conseguenza la
TEXTAREA.
Claro?
Ma a questo punto mi sa che non si possa fare... :o(
Grazie comunque!


 Ma a questo punto mi sa che non si possa fare... :o(
Uomo di poca fede.. ;)


 Esattamente, e' una selezione di lunghezza 0.
Uaaaaaaaaaa!!!
Eh sě che il dubbio m'era venuto... 
G-R-A-Z-I-E!!!
Lo testerň!!!


 G-R-A-Z-I-E!!!
De nada. In realta' forse e' piu' corretto dire che la selezione E' il
cursore.. va beh, non stiamo a disquisire adesso. ^_^"


Spettacolo! Funziona alla grande!
function SpyBr()
{
  if (event.keyCode==13 && event.altKey)
  {
    selezione = document.selection.createRange();
    selezione.text = '<BR>';
  }
}	
Con l'evento onKeyDown nella TextArea...
Grazie mille ancora!


 Grazie mille ancora!
De nada figurati.
Felice che hai fatto l'implementazione da solo, cmq. Non sempre mi piace
dare la pappa pronta, spesso preferisco dare le imbeccate per farci arrivare
le persone da sole.. c'e' anche piu' soddisfazione per quest'ultime, no? :)


beh, č uguale a quello che avevo consigliato all'inizio:
onkeypress='if (event.keyCode==13) {alert("eseguo la mia
function");event.keyCode=0}'

 function");event.keyCode=0}'
Era la "mia function" che mancava... una volta capito che il cursore non
č nient'altro che una selezione di lunghezza zero tutto mi č stato
chiaro...


stavo rispondendo a Fabio, avevo capito tutto il discorso (a cui peraltro
non ho partecipato perché con questi textrange non ho IMHO per mia fortuna
avuto mai a che fare)
Mi resta sempre la domanda: "ma che se ne fa uno di un simileditor html?? A
quel punto non gli conviene usare dreamweaver? Anche se non ha voglia di
studiarsi 2 righe di html, dreamweaver ha i suoi bei tastoni per la
formattazione"
Ma, dato che ultimamente vedo che è richiestissimo, probabilmente sbaglio io
logica; sempre probabilmente, è comodo inserire in una textarea un testo
formattato per poi visualizzarlo formattato...mah...

 formattazione"
Succede spesso di dover creare dei siti i cui contenuti sono gestiti
dall'utente finale.
L'utente finale di solito cambia una foto e mette un testo di poche
righe e di norma non sa una mazza di HTML ne di internet in generale.
Ecco perchè spesso fare un mini-editor ultra semplice ha un suo
perchè... :o)


   index=form.d1.selectedIndex;
Ho provato con IE5win,
e -form- non so da dove venga, (nemmeno IE  ("form is not defined"))
questo e' il modo migliore per interagire con un <FORM>:
document.forms[n].elements[n]
document.forms[variabile].elements[variabile]
document.forms["Modulo"].elements["importo"]
Cosi' funziona con tutti i browser.
function azzera(){
    document.forms[0].elements["importo"].value=0;
    document.forms[0].elements["rate"].value=0;
    document.forms[0].elements["d1"].selectedIndex=0;
}
function calcola(){
 imp=(document.forms[0].elements["importo"].value);
 if (imp){
  index=document.forms[0].elements["d1"].selectedIndex;
document.forms[0].elements["rate"].value=Math.round(imp/1000*(document.forms
[0].elements["d1"].options[index].value)* 100)/100;
 }
}
--
Ciao
  [web]   
www.gfcarlotti.it
   [mail]   
fra...@gfcarlotti.it
    [pgp]  
www.gfcarlotti.it/pgp/franco.asc