¿Por qué en este ejemplo http://jsfiddle.net/JksKx/8/ div pierde cursor cuando escribo texto? ¿Cómo arreglar tal comportamiento?Contenido editable de enlace personalizado editable
6
A
Respuesta
15
El evento de teclado se activa y escribe en su modelo de vista, que luego activa la función de actualización del enlace personalizado. Esto está escribiendo el innerHTML de vuelta al elemento, lo que hace que pierdas el foco.
Una solución fácil es comprobar en la función de actualización si el elemento.innerHTML ya es el mismo que el valor que desea establecer.
http://jsfiddle.net/rniemeyer/JksKx/9/
ko.bindingHandlers.htmlValue = {
init: function(element, valueAccessor, allBindingsAccessor) {
ko.utils.registerEventHandler(element, "keydown", function() {
var modelValue = valueAccessor();
var elementValue = element.innerHTML;
if (ko.isWriteableObservable(modelValue)) {
modelValue(elementValue);
}
else { //handle non-observable one-way binding
var allBindings = allBindingsAccessor();
if (allBindings['_ko_property_writers'] && allBindings['_ko_property_writers'].htmlValue) allBindings['_ko_property_writers'].htmlValue(elementValue);
}
}
)
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()) || "";
if (element.innerHTML !== value) {
element.innerHTML = value;
}
}
};
3
posible que desee cambiar keydown a keyUp, pero aparte de eso funciona muy bien =)
ko.utils.registerEventHandler(element, "keyup", function() {
Cuestiones relacionadas
- 1. Contenido HTML5 Editable con jQuery
- 2. Editable ListView
- 3. ComboBox editable
- 4. editable JComboBox
- 5. WPF Editable ComboBox
- 6. WPF ListBox editable
- 7. Cómo alternar un UILabel entre editable y no editable
- 8. UINavigationBar título editable?
- 9. Yesod Editable Table
- 10. Editable JTable Tutorial
- 11. Horario editable usando Drupal
- 12. Texto editable en Raphaël
- 13. Elemento 'Seleccionado' Editable
- 14. JCombobox editable habilitado
- 15. EditarTexto no editable
- 16. Editable Div Caret Position
- 17. ContenidoEnfoque editable en Chrome/Safari
- 18. ComboBox editable con enlace al valor no en la lista
- 19. Insertar texto en el cursor en un contenido div editable
- 20. Carriles no texto editable campo
- 21. cómo configurar nicedit no editable
- 22. WPF Editable Combobox IsFocused problema
- 23. menú desplegable editable en jquery
- 24. Texto editable en la cadena
- 25. Identificación editable en caso afterTextChanged
- 26. ListView con widget seleccionable/editable
- 27. Cuadrícula de datos editable en WPF
- 28. Enlazando una lista editable de niños
- 29. contenteditable div no realmente editable en webkit
- 30. ¿Cómo puedo hacer una consulta UNION editable?
Dos cosas me di cuenta en este contenteditable vinculante: 1. Asegúrese de que los datos -bind no está dentro del elemento con el atributo contenteditable. El elemento con contenteditable no activará el evento clave. 2. Si el usuario hace clic derecho en el elemento y pega texto, esto no actualizará el valor. haga clic en evento también debe ser asignado. Además, si utiliza botones como "negrita", haga clic en evento para vincularlo al cuerpo o algo así. –
El uso del enfoque parece funcionar para eventos de clic "en negrita" y otros similares. ko.utils.registerEventHandler (elemento, "foco", updateHandler); – Piercy