2009-10-22 21 views
6

Al presionar enter in contenteditable en cromo, se inserta un div. Esto interfiere con mi marcado, necesito que sea un br.jquery contenteditable enter "¿Cómo disparo shift-enter cuando alguien presiona enter?"

Sé que shift-enter es un br. ¿Cuál es la mejor manera de resolver el problema?

Gracias.

Reformulando la pregunta: ¿Cómo disparo la tecla shift-enter cuando alguien presiona enter?

He intentado escribir algo como esto:

$(document).keyup(function hotkeys(e) { 
    if (e.which == 13) 
    { 
     e = jQuery.Event("keydown") 
     e.which = 16; 
     $(document).trigger(e); 
     e.which = 13; 
     $(document).trigger(e); 
     alert("trigger"); 
    } 
}); 

No funciona.

Gracias.

Respuesta

0

Suponiendo rangy.js,

$('#myeditelement').on('keydown', function(ev){ 
    if (ev.which === 13) { insertNewLine(ev) } 
}) 

entonces,

function insertNewLine(ev){ 
    var nodeA, nodeB, sel, range 

    if (ev.stopPropagation) { ev.stopPropagation() } 
    if (ev.preventDefault) { ev.preventDefault() } 

    sel = rangy.getSelection() 
    range = sel.getRangeAt(0) 

    range.deleteContents() 
    nodeA = document.createElement('br') 
    range.insertNode(nodeA) 
    range.setStartAfter(nodeA) 
    nodeB = document.createElement('span') 
    range.insertNode(nodeB) 
    range.selectNodeContents(nodeB) 
    sel.removeAllRanges() 
    sel.addRange(range) 
    sel.collapseToEnd() 
    } 

Probado en Chrome, Opera, Borde partir de noviembre de 2017.

Cuestiones relacionadas