将文本添加到输入类型电子邮件角度jquery

时间:2016-08-25 18:54:03

标签: javascript jquery angularjs

我正在尝试将文字添加到输入类型的电子邮件但没有成功 这是我试图做的方式

 $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

2 个答案:

答案 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;电子邮件类型的输入不支持。