当前位置: 首页 > 知识库问答 >
问题:

从角度指令获取输入字段的值

景正文
2023-03-14

当在输入字段中按下enter键时,我使用这个答案中的指令来运行一个函数。

如何传递输入字段元素的值。val()指令调用的函数?或者将输入字段元素传递给函数,以在检索后清除值。

HTML

<input type="text" ng-enter="newField()" />

JS公司

app.directive('ngEnter', function() {
    return function(scope, element, attrs) {
        element.bind("keydown keypress", function(event) {
            if(event.which === 13) {
                element.val(); // value of input field

                scope.$apply(function(){
                    scope.$eval(attrs.ngEnter); // passed to this function
                });

                event.preventDefault();
            }
        });
    };
});

共有2个答案

莫乐
2023-03-14

您尝试过ng-提交吗?我创建了一个小提琴来向您展示如何在不需要您自己的指令的情况下执行您想要的内容。

http://jsfiddle.net/a6k7g/

显然,这个答案取决于您的需求和表单的复杂性。

宫修贤
2023-03-14

你可以这样做:

var func = scope.$eval(attrs.ngEnter);
func();

并让控制器处理值逻辑。请参阅下面的代码。现场演示(单击)。

此外,我不建议在您的自定义指令前加上ng。我建议使用您自己的前缀作为命名空间。ng用于Angular的核心。在我的示例中,我使用my-enter而不是ng-enter

示例标记:

  <input 
    type="text" 
    ng-model="foo" 
    my-enter="myFunc"
    placeholder="Type stuff!"
  >
  <p ng-repeat="val in cachedVals track by $index">{{val}}</p>

JavaScript:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
  $scope.cachedVals = [];
  $scope.foo = '';
  $scope.myFunc = function() {
    $scope.cachedVals.push($scope.foo);
    $scope.foo = '';
  };
});

app.directive('myEnter', function() {
  return function(scope, element, attrs) {
    element.bind("keydown keypress", function(event) {
      if(event.which === 13) {
        scope.$apply(function(){
          var func = scope.$eval(attrs.myEnter);
          func();
        });
        event.preventDefault();
      }
    });
  };
});

下面是一个孤立作用域的示例-您不需要$eval。

app.directive('myEnter', function() {
  return {
    scope: {
      func: '=myEnter'
    },
    link: function(scope, element, attrs) {
      element.bind("keydown keypress", function(event) {
        if(event.which === 13) {  
          scope.$apply(function(){
            scope.func();
          });  
          event.preventDefault();
        }
      });
    }
  };
});

 类似资料:
  • 问题内容: 我必须为IE8写一些代码。我有一个ng-repeat创建一个充满以下内容的表: IE8不会输入type = number 我想要一个指令,该指令将忽略该输入字段上不是数字键的击键....即.... 0-9 我不想让用户键入abc并污染模型,然后告诉他们该值无效。我宁愿不要让他们输入任何无效的数据。 问题答案: HTML: 指示: 柱塞 另请参见input中有关ng-model的过滤器。

  • 问题内容: 我仅使用Javascript创建表单。我正在尝试使用Javascript获取位于中的输入字段的值。是否有可能获得内的字段的值? 问题答案: 是的,即使该站点来自另一个域,也应该可行。 例如,在我网站的HTML页面中,我有一个iFrame,其内容来自另一个网站。iFrame内容是单个选择字段。 我需要能够在我的网站上读取所选的值。换句话说,我需要使用我自己的应用程序中另一个域的选择列表。

  • 问题内容: 我有一个指令来建立一个表格: 我要做的是通过单元测试来验证,如果有一些输入,错误消息将显示出来。使用angular 1.2,我可以修改$ scope.config.item,它将更新视图值并显示错误。 据我所知,在角度为1.3的情况下,如果模型未通过验证,则视图值不会得到更新…所以我需要修改视图值以确保显示错误消息。 如何获得对“ configItem”输入的访问权限,以便可以设置视图

  • 本文向大家介绍python获取从命令行输入数字的方法,包括了python获取从命令行输入数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python获取从命令行输入数字的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我发现当有人按下“回车”键时,这个问题对于提交表单非常有用: Javascript: 超文本标记语言: 我想知道的是,当按下“回车”键时,将字段设置为模糊。模糊sender字段的效果是什么? 我想保留ngEnter指令的原样,因为我想将其重新用于其他函数。 更新:我知道我可以创建一个完整的指令来进行模糊处理(我现在就是这么做的),但我想做的是能够做这样的事情: 或者如何将当前元素作为参数传递?

  • 问题内容: 我正在尝试使用http://jquerypriceformat.com/为欧盟货币字段创建输入掩码 到目前为止,在我的指令中,输入已正确应用掩码并正确显示给用户,但是我相信这是有问题的,因为POST值是以奇怪的格式发送的,这与我们在输入字段中看到的完全不同。 我包括priceformat.js 在角度上: 我的输入正确显示了带有掩码的值,但是在POST数据(用角度表示)上,它是一个不同