only move caret to end on model change when the corresponding attribute is set

fix-space-nbsp
Dmitri Akatov 11 years ago
parent dd8ac4dc44
commit 64fd235450

@ -20,6 +20,7 @@ angular.module('contenteditable', [])
'stripBr', 'stripBr',
'noLineBreaks', 'noLineBreaks',
'selectNonEditable', 'selectNonEditable',
'moveCaretToEndOnChange',
], function(opt) { ], function(opt) {
var o = attrs[opt] var o = attrs[opt]
opts[opt] = o && o !== 'false' opts[opt] = o && o !== 'false'
@ -64,18 +65,20 @@ angular.module('contenteditable', [])
oldRender() oldRender()
} }
element.html(ngModel.$viewValue || '') element.html(ngModel.$viewValue || '')
el = element[0] if (opts.moveCaretToEndOnChange) {
range = document.createRange() el = element[0]
sel = window.getSelection() range = document.createRange()
if (el.childNodes.length > 0) { sel = window.getSelection()
el2 = el.childNodes[el.childNodes.length - 1] if (el.childNodes.length > 0) {
range.setStartAfter(el2) el2 = el.childNodes[el.childNodes.length - 1]
} else { range.setStartAfter(el2)
range.setStartAfter(el) } else {
range.setStartAfter(el)
}
range.collapse(true)
sel.removeAllRanges()
sel.addRange(range)
} }
range.collapse(true)
sel.removeAllRanges()
sel.addRange(range)
} }
if (opts.selectNonEditable) { if (opts.selectNonEditable) {
element.bind('click', function(e) { element.bind('click', function(e) {