【问题标题】:ng-submit on dropdown and textareang-submit 在下拉和 textarea 上
【发布时间】:2016-09-14 15:07:49
【问题描述】:

您好,我有以下代码:

<form ng-submit="ctrl.commitEdit(sign)">
    <input ng-model="sign.Value">
    <input ng-model="sign.Date">
    <textarea ng-model="sign.Comment"></textarea>
    <select ng-model="sign.Property"></select>
    <button type="submit">Save</button>
</form>

我的表单围绕着我的组件,我尝试以两种方式保存我的编辑(在我的表单中,我从我的控制器调用 ng-submit 方法,这会保存我的编辑):

  • 通过单击类型为“提交”的我的按钮,它会调用表单的 ng-submit 中的函数。这工作正常!它可以节省
  • 然后我还想通过按键盘上的“enter”来保存。这就是为什么我使用带有提交类型按钮的 ng-submit 表单。这仅在我更改输入中的某些内容并且焦点在那里时才有效!当我在 textarea 中更改某些内容并按“enter”时,它会中断。当我更改下拉列表中的某些内容然后按“输入”时,它会再次打开下拉列表。

所以我想在输入、选择和文本区域中以各种方式按“输入”来保存。我该怎么做?

谢谢

【问题讨论】:

    标签: javascript html angularjs forms ng-submit


    【解决方案1】:

    您需要做的就是使用 ngKeyup。

    https://docs.angularjs.org/api/ng/directive/ngKeyup

    只需用输入键码 13 绑定它并调用你的函数

    此外,这里还有一个指令,您可以根据自己的目的实施。

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

    【讨论】:

    • 您好,感谢您的回答。但是为什么 ng-submit 对我的输入和我的 textarea 和 dropdown 没有效果呢?当我在我的一个输入中写入一个值并按“输入”时,它会调用我的控制器中的函数并正确保存它。当我在我的 textarea 中执行相同操作时,它只会在 textarea 中创建一个新行。我的选择也是如此,它再次打开下拉菜单并显示项目。这是因为浏览器的默认行为是在选择或文本区域中按 Enter 吗?如果我可以在 select 和 textarea 上使用 ng-submit 就像在输入上一样,我会很高兴...
    • ng-submit 很好,因为我可以在一个标签(表单)中实现它一次,只需在表单内的按钮上输入“提交”类型。所以很容易关心代码。我曾经调用过这个函数...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多