Domanda

Tutto ciò di cui ho bisogno è essere in grado di rilevare quando il testo viene rilasciato in una Textarea. Quindi prendo quel testo e faccio cose con esso e svuoto l'area di testo. Potrebbero esserci molte di queste textareas e aspettative di interfaccia utente molto elevate, quindi il polling è l'ultima risorsa.

Per IE, "onfocus" fa il trucco, poiché questo evento viene generato dopo che l'utente rilascia elementi nell'area di testo.

Per Firefox, non riesco a trovare un evento che funzioni. Ho provato onmouseup e onchange .. non so cos'altro provare da lì. Odierei dover sondare la textarea per il contenuto. Aiuto molto apprezzato. Grazie.

Modifica: per chiarimenti, " eliminato " significa che l'utente seleziona il testo (di solito) dalla pagina, ma non importa dove, lo trascina e lo rilascia nell'area di testo. Questo non è lo stesso di Ctrl + V, o incolla con il tasto destro (che richiede due diversi metodi di rilevamento, BTW), o (ovviamente) digitando nell'area di testo. In particolare, è il "drop" aspetto del trascinamento della selezione. Davvero non so come altro dirlo.

Penso che questa domanda sia stata formulata in modo piuttosto accurato. Per umorizzarmi, supponiamo che intendessi qualsiasi altra operazione su un'area di testo che tutti voi avete scelto di condividere. Se intendessi "incollare", non pensi che avrei menzionato qualcosa sull'incollare nel titolo o nel contenuto della mia domanda? Lo stesso vale per digitando in una textarea. Ma forse tutti voi non mi conoscete abbastanza bene da sapere che scrivo ciò che intendo, piuttosto che digitare erroneamente cose solo in qualche modo correlate a ciò che intendo.

È stato utile?

Soluzione 2

Il polling sembra essere l'unica strada da percorrere.

Quando si avvia un'operazione Drag + Drop nel browser, sembra annullare tutto ciò che sta accadendo. Puoi testimoniarlo mettendo " onmouseover " eventi su qualcosa nella pagina, quindi avviare un'operazione DnD e trascinarla sopra. Gli eventi non verranno attivati.

Sembra solo una coincidenza di come il browser gestisce internamente " trascina e rilascia " che provoca l'attivazione di onfocus () per la textarea in IE e Safari. Dubito che ci sia molto da definire nelle specifiche W3 ... non importa, W3 è una schifezza, e inoltre nessuno le aderisce completamente.

Nella mia domanda ho dichiarato il lusso di svuotare l'area di testo dopo ogni utilizzo, quindi ritengo che il polling per: textarea.value.length > 0 sia quasi nessun costo e non dovrebbe essere un problema per le prestazioni.

Ma, ahimè, ha in particolare a che fare con il rilascio di contenuti in un'area di testo.

Down-mod di distanza per alleviare il tuo dolore.

Altri suggerimenti

Per Firefox, questo funziona per me:

window.addEventHandler("dragdrop", function(event) {alert("Drop it like it's hot!")}, true)

Tuttavia, non funziona in Safari. Non ho provato IE.

Se vuoi che la tua textarea reagisca al fatto che il testo venga eliminato, incollato o digitato, la tua unica soluzione sarebbe un pulsante. Persino un timer che esegue il polling del contenuto non ti aiuterà.

Si dice che si desidera che l'utente sia in grado di digitare il testo nell'area di testo. E dici che vuoi cancellare il testo ogni volta che l'evento viene generato. Non è possibile per il browser sapere che l'utente ha terminato di digitare. Devi fare affidamento su un'azione specifica.

Ora per il drop o paste, puoi fare affidamento sugli eventi mouseup e keyup per rilevarlo.

Che cosa vuoi dire con " eliminato " ;? Stai parlando di un'operazione Incolla (^ V)? Se la risposta di Aron è corretta, otterrai keydown / keyup (e il valore sarà leggibile in keyup).

Un callback generico che accadrà su qualsiasi aggiornamento di un input è 'onchange' - potresti provarlo. Tieni presente che durante la digitazione non viene chiamato fino al termine e alla sfocatura dell'input, quindi se hai bisogno di aggiornamenti istantanei sia sulla digitazione che su altre forme di input, hai comunque bisogno di 'onkeyup'.

Modifica il chiarimento: l'onchange dell'IMO dovrebbe essere attivato quando un trascinamento della selezione fa sì che il contenuto venga aggiunto ad un'area di testo; Lo considero un bug del browser che non lo è (almeno in Firefox). Posso solo concordare in questo caso che il polling è tutto ciò che ti resta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top