我正在尝试将文字添加到输入类型的电子邮件但没有成功 这是我试图做的方式
$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;
的事实有关。我收到了错误
无法从'HTMLInputElement'中读取'selectionStart'属性: 输入元素的类型('email')不支持选择。
由于某种原因,电子邮件不接受任何值。
我只使用镀铬。 任何变通办法都是apreciated
答案 0 :(得分:1)
我不明白你想要实现的目标。不过,我认为您希望更改type
指令的input
属性。
您可以仅使用角度来实现它,如下所示:
<input type={{foo.bar}}>
稍后在您的控制器中相应地更改$scope.foo.bar
的值。
此外,{{}}
之间的任何内容都是表达式,它可以评估为任何内容。
PS:使用Jquery和AngularJS是多余的,不被认为是一种好习惯。
答案 1 :(得分:1)
以下链接指向另一篇文章的答案,其中包含与您完全相同的问题类型:
https://stackoverflow.com/a/21959157/6032583
看起来你需要找到另一种方式,因为&#39; selectionStart&#39;电子邮件类型的输入不支持。