表单提交输入需要至少一个输入类型="文本"元件

时间:2015-01-28 10:19:29

标签: javascript html angularjs forms

我观察到表单元素应该至少需要一个输入类型=" text"元素在输入时提交表格。

这是我的代码:

<form ng-submit="executeFunc()">
  <input type="text"/>
  <input type="submit"/>
</form>

但是,如果我们没有第一个输入类型=&#34; text&#34;元素,而不是我们有单选按钮或选择框,复选框。 如果是这个场景,那么如何在输入时提交表单。

我想知道它是否符合W3C标准,我们需要提供至少一种输入类型&#34; text&#34;元素?

2 个答案:

答案 0 :(得分:2)

关于添加的问题“根据W3C标准,我们需要提供至少一个输入类型”text“元素?”,答案是没有HTML规范要求表单可以提交按Enter键。这些规范(隐约地)描述了可能所做的浏览器。

最初,我们的想法是,您可以在填写输入字段后按Enter键提交仅包含一个文本输入字段(以及可能的辐射按钮和复选框)的表单。这被认为对简单表单(通常是搜索表单或订阅表单)很有用,可以使用户更快地完成任务。

后来,这个想法经常扩展到具有多个文本输入字段的表单。这通常会导致问题,因为用户可能会在填写他应填写的所有字段之前按Enter键。然而,这就是现代浏览器通常的行为方式(假设表单中有提交按钮)。

HTML5遵循传统,只是描述了浏览器可能会做什么,尽管在Implicit submission部分强烈推荐(但不要求一致性)共同行为偏离传统:

  

如果用户代理支持让用户隐式提交表单   (例如,在某些平台上按下“输入”键而不是文本   字段集中隐式提交表单),然后这样做   默认按钮具有已定义的激活行为的表单必须导致   用户代理在该默认值上运行合成点击激活步骤   按钮。

     

[...]

     

注意:网络上的网页只有在有办法的情况下才可用   隐式提交表单,因此强烈建议用户代理   支持这个

(关于原始问题,答案是你需要在JavaScript中处理这些事情,@ bardznusny的回答显示了一种简洁的方法。)

答案 1 :(得分:1)

每次按下click键时,只需在提交按钮上触发enter事件。

$(document).keypress(function (e) {
  if (e.keyCode === 13) {
    $('input[type="submit"]').click();
  }
});

http://jsfiddle.net/1eLyeghh/1/