2014-04-01 74 views
0

我在我的页面上有一个输入字段(type = text)。我使用的引导和样式现场我用未来的html代码:如何防止回车键提交表格

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

在流星应用程序,我有事件处理程序:

Template.new_bookmark.events({ 

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

当我按下输入字段中的任何按钮,我拿到钥匙代码在控制台(如我所愿)。但如果我按Enter键,则控制台日志没有任何内容,我的页面被重新加载。

看起来像我的问题的原因是在窗体标签。如果我删除它一切正常。我需要做什么 ?删除表单标签或防止页面在我按Enter键时重新加载?如果答案是第二个,我该怎么做?

+3

check e.preventDefault();这将是有用的。 –

+0

如果您不想要表单的行为,请不要使用表单。 – RobG

+1

如果你允许我问,为什么你使用表单,如果你不想提交? – MJoraid

回答

1

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

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

或者,如果你想在提交之前验证输入字段,那么你可以使用一个单独的函数来完成验证你:

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

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

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

+0

我的代码格式化过了,并且隐藏了该行。我现在只是修复它,它是可见的:) – MJoraid