如何防止Enter键提交表单

时间:2014-04-01 05:06:30

标签: javascript html meteor

我的页面上有一个输入字段(type = text)。我使用Bootstrap并设置我使用下一个HTML代码的字段:

<form fole="form">
    <div class="form-group">
        <input type="text" class="form-control" id="add-bookmark" value placeholder="Enter URL">
    </div>
</form>

在meteor应用程序中,我有事件处理程序:

Template.new_bookmark.events({

    // add new bookmark
    'keyup #add-bookmark' : function(e,t) {      
      console.log(e.which);
      if(e.which === 13)
      {

当我按下输入字段中的任何按钮时,我会在控制台中获取密钥代码(如我所愿)。但是,如果我按下Enter键,控制台日志就没有任何内容,我的页面将被重新加载。

看起来我的问题的原因在于form-tag。如果我删除它一切正常。我需要做什么 ?删除表单标签或阻止在我按Enter键时重新加载页面?如果答案是第二个,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

页面未被“重新加载”它正在被提交,这是您关注表单(在表单中选择输入字段)并按Enter键时的默认行为。如何防止这种情况,并将其添加到您的表单中:

<form name="myForm" onsubmit="return false;"> 

或者如果您想在提交前验证输入字段,那么您可以使用单独的函数为您进行验证:

<form name="myForm" onsubmit="return validate();"> 

function validate()
{
  //pur you validation code here
  return true;
}

至于密钥日志,实际上你会在你的日志中得到 Enter ,但事实是,当你点击 Enter 时,brwoser将做的第一个动作是提交表单,因此将开始发送新的http reqeust并开始从服务器传输信息。当发生这种情况时,您的浏览器插件(Firebug,控制台等)将暂停一段时间并等待新页面加载。 我不确定这是多么准确,但这是我理解的方式。