18

据我所知,在 AngularJS 中处理对话框中的输入键的推荐方法是在对话框中放置一个 <form> 标记和一个提交按钮。

很公平,但是如果你使用 Angular-UI 和他们的 $dialog 服务,当按下回车键时表单会简单地关闭。没有办法拦截。即使您将处理程序附加到 ng-click 或 ng-submit,表单也只会关闭而不会返回任何结果。

还有什么我需要做的吗

[编辑]

解决了它,我必须明确指定我的“取消”按钮是“按钮”类型。似乎默认为“提交”?

所以除了我的 html 表单技能之外没有真正的问题:)

4

2 回答 2

32

回答我自己的问题。按钮似乎默认为提交(?),如果我明确地将它们设置为 type="button" 那么在表单输入字段中按 enter 时它们不会触发回发。

<form>
     <input type="text" ... />
     <button type="button" ng-click=...>Cancel</button>
     <button type="submit" ng-click=...>OK</button>
</form>

这样,在输入字段中按回车键将触发 ng-click 的 OK 按钮。

正如你们 html 黑客已经理解的那样,这实际上与对话框或 angularjs 无关,这是一个 html 表单问题和我缺乏网络技能......

于 2013-08-22T13:06:44.783 回答
1

我相信这是因为您的“关闭”按钮没有设置为 type="button",我认为这是第一个具有焦点的元素,所以当按下 enter 时,您正在输入该按钮,默认情况下,它将提交表单. 添加 type="button" 应该可以解决它。

另外记录一下,最新版的angular material有md-button默认自动添加type="button"(除非你指定type="submit")来避免这种情况

于 2019-06-06T06:23:42.953 回答