From 64fd235450ba2048fb12446a38148acbf35ee4d9 Mon Sep 17 00:00:00 2001 From: Dmitri Akatov Date: Mon, 11 Nov 2013 15:36:23 -0800 Subject: [PATCH] only move caret to end on model change when the corresponding attribute is set --- angular-contenteditable.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/angular-contenteditable.js b/angular-contenteditable.js index fdcb3d6..0b3ce9a 100644 --- a/angular-contenteditable.js +++ b/angular-contenteditable.js @@ -20,6 +20,7 @@ angular.module('contenteditable', []) 'stripBr', 'noLineBreaks', 'selectNonEditable', + 'moveCaretToEndOnChange', ], function(opt) { var o = attrs[opt] opts[opt] = o && o !== 'false' @@ -64,18 +65,20 @@ angular.module('contenteditable', []) oldRender() } element.html(ngModel.$viewValue || '') - el = element[0] - range = document.createRange() - sel = window.getSelection() - if (el.childNodes.length > 0) { - el2 = el.childNodes[el.childNodes.length - 1] - range.setStartAfter(el2) - } else { - range.setStartAfter(el) + if (opts.moveCaretToEndOnChange) { + el = element[0] + range = document.createRange() + sel = window.getSelection() + if (el.childNodes.length > 0) { + el2 = el.childNodes[el.childNodes.length - 1] + range.setStartAfter(el2) + } else { + range.setStartAfter(el) + } + range.collapse(true) + sel.removeAllRanges() + sel.addRange(range) } - range.collapse(true) - sel.removeAllRanges() - sel.addRange(range) } if (opts.selectNonEditable) { element.bind('click', function(e) {