Su InternetExplorer, un DIV contentEditable crea un nuovo paragrafo (<p></p>
) ogni volta che si preme Invio mentre Firefox crea un tag <br/>
. È possibile forzare IE a inserire un <br/>
anziché un nuovo paragrafo?evitare cioè elemento contentEditable per creare paragrafi sul tasto Invio
risposta
Sì, è possibile evitare l'inserimento di paragrafi arrestando prima l'evento keydown (window.event.stopPropagation();
) e quindi inserendo la stringa utilizzando l'inserto HTML command.
Tuttavia, IE dipende da questi div per l'impostazione di stili ecc. E ci si può mettere nei guai utilizzando <br> s.
Ti suggerisco di utilizzare un progetto come TinyMCE or other editors e di cercare un editor che si comporta come vorresti, poiché hanno tutti i tipi di soluzioni alternative per i diversi problemi del browser. Forse si può trovare un editore che utilizza <br> s ...
Se si può utilizzare, FCKEditor ha un'impostazione per questo
Ecco una soluzione (utilizza jQuery). Dopo aver fatto clic sul pulsante "Cambia in BR", verrà inserito il tag <br>
anziché il tag <p></p>
.
Html:
<div id='editable' contentEditable="true">
This is a division that is content editable. You can position the cursor
within the text, move the cursor with the arrow keys, and use the keyboard
to enter or delete text at the cursor position.
</div>
<button type="button" onclick='InsertBR()'>Change to BR</button>
<button type="button" onclick='ViewSource()'>View Div source</button>
Javascript:
function InsertBR()
{
$("#editable").keypress(function(e) {
if (e.which == 13)
{
e.preventDefault();
document.selection.createRange().pasteHTML("<br/>")
}
});
}
function ViewSource()
{
var div = document.getElementById('editable');
alert('div.innerHTML = ' + div.innerHTML);
}
usa 'insertNode()' invece di 'pasteHTML()' per IE11 + e cross browser come accennato [qui] (http://stackoverflow.com/questions/6690752/insert-html-at-caret-in-a-contenteditable -div/6691294 # 6691294) –
Si può sempre imparare ad usare SHIFT +ENTER per i ritorni a linea singola e ENTER per i ritorni di paragrafo. IE si comporta come MS Word in questo senso.
Modifica della line-height
del <p>
all'interno delle modificabili <div>
opere:
#editable_div p
{
line-height: 0px;
}
- 1. Attraversare paragrafi contenteditable con i tasti freccia
- 2. Tasto funzione tastiera per invio tasto evento
- 3. Rileva tasto Invio C#
- 4. Posso semplificare cliccando sul tasto invio con AngularJS?
- 5. Come convertire un tasto Invio Premere un tasto Tasto Premere per le pagine Web
- 6. Invio tasto "INVIO" tramite porta seriale
- 7. DataList e tasto Invio evento
- 8. Evitare di trasformazione di testo per Link IE modalità contentEditable
- 9. funzione execute su tasto invio
- 10. Come disabilitare/sovrascrivere il tasto invio per il completamento automatico?
- 11. Xamarin Android EditText tasto Invio
- 12. Windows Forms Textbox Tasto Invio
- 13. Come attivare la pressione di tasto invio
- 14. document.head.appendChild (elemento) cioè IE7 e ie8
- 15. Come creare paragrafi dall'output della catena markov?
- 16. Evitare tasto Tkinter OptionMenu ridimensionamento
- 17. Permetti al tasto Invio per accedere in asp.net?
- 18. Come scrivere "tasto invio" su uno stream?
- 19. Kendo Grid: Aggiornamento trigger fai clic sul tasto invio per la modifica popup dell'editor
- 20. Numero forzato tastiera su ipad per elemento contenteditable
- 21. contenteditable - Selezione di 2 paragrafi figlio e scrittura di testo su (numero di Firefox)
- 22. Ignorare il comportamento SELECT del tasto Invio
- 23. Bind TextBox su tasto Invio premere
- 24. Cambia tastiera Android L tasto invio colore
- 25. javascript evitare di default per keyup
- 26. Hit tasto Invio per controllare o selezionare casella
- 27. Prevenire l'invio del modulo al tasto Invio per il testo
- 28. Disabilitazione Android Tasto Invio nella tastiera virtuale
- 29. Come nascondere la tastiera al tasto Invio
- 30. C'è un modo per evitare che il bando di invio di knockoutjs invii il modulo quando si preme il tasto Invio?
Questa strategia si rompe Undo. Ogni volta che premi Invio, metti a posto il DOM, quindi l'utente non può più utilizzare il menu Annulla per annullare la modifica! –
Manipolando il DOM usando i comandi NON si interrompe l'annullamento. Ogni comando può essere annullato. Ovviamente devi evitare cose come div.innerHTML = "foo"; –