我 试图 添加 文本 到 输入 类型 的 电子 邮件 没有 成功 这里 是 我 如何 尝试 这样 做
$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 ' ) 不 支持 选择 。
且 由于 某种 原因 , 电子 邮件 将 不 接受 值 。
我 只 使用 chrome 。 任何 变通 办法 都 将 是 apreciated
2条答案
按热度按时间aor9mmx11#
这里有一个链接,指向另一个帖子的答案,该帖子的问题类型与您的完全相同:
https://stackoverflow.com/a/21959157/6032583
看起来您需要找到其他方法,因为电子邮件类型的输入不支持“selectionStart”。
afdcj2ne2#
我 不 明白 你 想 达到 什么 目的 。 不过 , 我 认为 你 想 改变
input
指令 的type
属性 。您 可以 仅 使用 Angular 来 实现 , 如下 所 示 :
<input type={{foo.bar}}>
稍后 在 控制 器 中 相应 地 更改
$scope.foo.bar
的 值 。此外 ,
{{}}
之间 的 任何 值 都 是 表达式 , 它 可以 计算 为 任何 值 。PS : 将 Jquery 与 AngularJS 一起 使用 有点 多余 , 并 不 被 认为 是 一 个 好 的 实践 。