【问题标题】:Prevent form submit on enter with Meteor使用 Meteor 防止在输入时提交表单
【发布时间】:2015-08-20 18:05:33
【问题描述】:

当我点击表单中的某个字段并按 Enter 键时,表单已提交。

这对我的用例不利,需要避免。

我尝试了几个步骤都没有成功:

template.rendered

$('#myForm').on("keyup keypress", function(e) {
    var code = e.keyCode || e.which;
    if (code  == 13) {
        e.preventDefault();
        return false;
    }
});

$("form").submit(function( event ) {
    event.preventDefault();
});

Template.events

"keyup #myform": function(event){
  event.preventDefault();
}

还没有任何帮助。我正在使用 Meteor 和语义用户界面。

还有什么可以帮助的?

【问题讨论】:

  • 删除表单标签会阻止每次提交,但我会试一试
  • 不幸的是,这对我不起作用,因为我使用表单标签进行验证

标签: javascript jquery forms meteor


【解决方案1】:

如果您想阻止仅当用户在表单字段中按“enter”时提交表单,您不应该使用keydown 事件吗?

这样,您甚至可以只允许表单的最后一个字段使用它。

【讨论】:

    【解决方案2】:

    试试这个:

    Template.<your_template_name>.events({        
       // Submit form event
        'submit form': function(event){
            // Stop form submission
            event.preventDefault();
        }
    });
    

    【讨论】:

    • 它只会阻止每个表单提交。没有简单的方法(据我所知)来检查它是来自用户按下“输入”还是按下了提交按钮。
    • 我认为他有一个按钮或类似“发布”的东西来触发实际提交。
    • 好吧,你是对的。我的错,它可能比在每个字段上阻止“输入”更优雅。
    【解决方案3】:

    改变这个:

    "keyup #myform": function(event){
      event.preventDefault();
    }
    

    到:

    "submit #myform": function(event){
      event.preventDefault();
    }
    

    点击“enter”会触发“submit”,因此您正在浪费时间试图找出与“enter”相关联的键码。

    【讨论】:

    • 我使用“submit #myform”事件提交表单,这很好。我只是希望按回车键不会触发提交!
    • 然后使用“点击”而不是“提交”?
    • 不幸的是,语义 UI 框架仍然在每次提交/输入时进行验证,这将触发 GUI 在按下输入时将每个字段标记为无效。无论如何,现在更改为“单击”不会触发整个操作。感谢您的提示;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2013-07-25
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多