【问题标题】:Enter key to submit form immediately输入键立即提交表单
【发布时间】:2016-12-13 23:04:16
【问题描述】:

编辑
这个问题与建议的重复项不同,因为它使用了form 元素和事件submit form,而建议的重复项没有。

这个 Meteor 客户端代码需要在按下 Enter 键后触发 submit form 事件,而是将焦点移动到屏幕上的下一个输入元素,直到到达最后一个元素然后触发提交,这不是需要什么,不如立即提交。
如何修复?谢谢

  Template.content.events({
  'submit form': function (event) {
    event.preventDefault();
    concole.log('form submitted');
  }
});
<template name="content">
  <form>
    {{#each this.items}} {{> sub}} {{/each}}
  </form>
</template>


<template name="sub">
  {{#if isEqual element "input"}} {{> input}} {{/if}}
</template>
<template name="input">
  <input class={{class}} type="{{#if type}}{{type}}{{else}}text{{/if}}" name={{name}} placeholder={{placeholder}} value={{value}} data-id={{_id}}>
</template>

【问题讨论】:

  • 我在您的代码中看不到任何输入字段。他们是value.[] 吗?您是否为表单和输入元素使用任何外部插件?
  • @Khang 编辑了它。对不起,我的错。
  • 您的表单是否包含submit 类型的按钮?如果没有尝试添加一个
  • @Khang 表单不应该有提交类型的按钮,而是使用 div 来模拟基于数据源动态创建的按钮,由引导程序设置样式以轻松地以正确的间距动态定位“按钮” .

标签: javascript meteor


【解决方案1】:

有两种方法可以解决这个问题。

  1. 'type="submit"': = 您可以将 type = submit 设置为您的所有输入字段。
  2. 当用户在输入字段上按下回车键时调用提交方法。

    Template.content.events = {
       'keypress input': function (evt, template) {
         if (evt.which === 13) {
          $( "form" ).submit();
        }
      },
      'submit form': function (event) {
        event.preventDefault();
        concole.log('form submitted');
      }
    };
    

【讨论】:

  • 您的答案是两步解决方案还是其中之一?我试过keypress input在按下 Enter 键时没有被调用。
  • 您可以尝试在输入模板“Template.input.events”上设置事件吗?
  • keypress 不起作用,但 keydown 在输入模板上起作用
猜你喜欢
  • 2012-05-05
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2020-09-08
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多