2016-08-25 2 views
0

Я пытаюсь добавить текст ввод типа электронной почты без успеха здесь, как я пытаюсь сделать этодобавить текст входного типа электронной почты угловой JQuery

$scope.lastFocused; 
    angular.element("input[type='text'], input[type='url'], input[type='email'], input[type='password'], input[type='search'], input[type='tel'], textarea").focus(function() { 

    $scope.lastFocused = document.activeElement; 
    }); 

    $scope.insertText = function(text) { 
    var input = $scope.lastFocused; 
    console.log(input); 
    if (input == undefined) { return; } 
    var scrollPos = input.scrollTop; 
    var pos = input.selectionStart; 
    var front = (input.value).substring(0, pos); 
    var back = (input.value).substring(pos, input.value.length); 
    input.value = front+text+back; 
    pos = pos + text.length; 

    input.scrollTop = scrollPos; 
    console.log(angular.element(input).val()); 
    angular.element(input).trigger('input'); 

}; 

Я думаю, что проблема связана с факт, что я пытаюсь вызвать ввод текста типа и электронной почты, не поддерживает input.selectionStart;. Я получаю ошибку

Не удалось прочитать свойство «SelectionStart» от «HTMLInputElement»: тип входного элемента (в «электронная почта») не поддерживает выбор.

и по какой-то причине адрес электронной почты не принимает значение.

Я использую только хром. любые обходные пути были бы оценены

+0

жаль, что я знаю, что это не полный код –

ответ

1

Вот ссылка на ответ на другую должность с тем же точным типом вопроса, как вы:

https://stackoverflow.com/a/21959157/6032583

Похоже, что вы собираетесь нужно найти другой путь, потому что «SelectionStart» является не поддерживается вводом типа электронной почты.

+0

Спасибо, я не понял, какова была настоящая проблема, –

1

Я не понимаю, чего вы пытаетесь достичь. Тем не менее, я думаю, вы хотите изменить атрибут type директивы input.

Вы можете достичь этого, используя только угловую, следующим образом: <input type={{foo.bar}}>

Позже в контроллере изменить значение $scope.foo.bar соответственно.

Кроме того, все, что угодно между {{}}, является выражением, оно может оценивать что угодно.

PS: Использование Jquery вместе с AngularJS является излишним и не считается хорошей практикой.

+0

Благодарим за ваше время, к сожалению, это расширение хром, поэтому вы не можете реально изменить элементы на сайте (вы можете, но это будет громоздко, чтобы снова подключить его к области) Я дам вам голосование, потому что можно изменить угловой тип с jquery lite, но у него не было всех функций, которые мне нужны. –

Смежные вопросы