From 5a1b9c1af9944846fda57b631ae58678ae4fac13 Mon Sep 17 00:00:00 2001 From: Mario Volke Date: Tue, 17 Jun 2014 14:31:03 +0200 Subject: [PATCH 1/2] refactored addressInput directive in write view to not use stopPropagation --- src/js/controller/write.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/js/controller/write.js b/src/js/controller/write.js index 845289a..5d7cafc 100644 --- a/src/js/controller/write.js +++ b/src/js/controller/write.js @@ -483,7 +483,11 @@ define(function(require) { return { //scope: true, // optionally create a child scope link: function(scope, element, attrs) { - element.on('click', function() { + element.on('click', function(e) { + if(e.target.nodeName === 'INPUT') { + return; + } + var fieldName = attrs.field; var field = scope[fieldName]; @@ -509,11 +513,6 @@ define(function(require) { var field = scope[fieldName]; var index = parseInt(attrs.id.replace(fieldName, ''), 10); - element.on('click', function(e) { - // focus on this one and dont bubble to field click handler - e.stopPropagation(); - }); - element.on('blur', function() { if (!checkForEmptyInput(field)) { // create new field input From 29dfb9fe7eaf099436aec30b56ac3a91dfc99f7a Mon Sep 17 00:00:00 2001 From: Mario Volke Date: Tue, 17 Jun 2014 14:54:06 +0200 Subject: [PATCH 2/2] addressInput directive: prevent race conditions with focusMe directive, prevent loosing focus when hitting space in empty input field --- src/js/controller/write.js | 14 ++++++++------ src/tpl/write.html | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/js/controller/write.js b/src/js/controller/write.js index 5d7cafc..4d9728c 100644 --- a/src/js/controller/write.js +++ b/src/js/controller/write.js @@ -531,12 +531,14 @@ define(function(require) { // catch space, comma, semicolon e.preventDefault(); - // create new field input - addInput(field, scope); - // find next input and focus - var nextId = fieldName + (index + 1); - document.getElementById(nextId).focus(); - + // add next field only if current input is not empty + if(field[index].address) { + // create new field input + addInput(field, scope); + // find next input and focus + var nextId = fieldName + (index + 1); + document.getElementById(nextId).focus(); + } } else if ((code === 8 || code === 46) && !field[index].address && field.length > 1) { // backspace, delete on empty input // remove input diff --git a/src/tpl/write.html b/src/tpl/write.html index bbc5706..88d6d57 100644 --- a/src/tpl/write.html +++ b/src/tpl/write.html @@ -14,7 +14,7 @@

- +