使用回车键表单提交错误

时间:2014-02-04 11:43:33

标签: javascript php forms laravel sammy.js

我正在使用laravel和sammy.js作为我的应用程序。我的登录表单如下所示:

<form action="#/login" method="post">
<!-- inputs -->
</form>

现在,sammy.js就像这样抓住它:

this.post('#/login',function(){
         //handle, send to laravel for login
        });

我的问题是,如果我按下回车键,显然不是提交表单,这会导致this.post('#/login')事件被捕获并且要执行的功能,已经发出了HTTP请求,并且请求laravel路线。由于路线不存在,因此会显示MethodNotAllowedHttpException

现在,问题是:为什么会发生这种情况?按“提交”按钮进行登录时,点击回车键会导致上述错误。

我想要一个问题的实际解决方案,以及对它的解释,而不是像按键上的e.preventDefault()或js中的return false那样的补丁。

注意:sammy已正确初始化,表单位于sammy工作的容器中,并使用用于在以前版本的站点中工作的enter键提交。到目前为止已经发生了很多变化,所以回复并不是一个好的选择,所以我想提出一个如何解决问题的实际建议。

由于

1 个答案:

答案 0 :(得分:0)

引用Html5规范中的4.10.22.2 Implicit submission部分:

  

用户代理可以在每个表单中建立一个按钮作为表单   默认按钮。这应该是树顺序中的第一个提交按钮   其表单所有者是表单元素,但用户代理可以选择   另一个按钮,如果另一个按钮更适合该平台。   如果平台支持让用户隐式提交表单   (例如,在某些平台上按下“输入”键而不是文本   字段是隐式地提交表单),然后必须这样做   导致表单的默认按钮的激活行为(如果有)   运行

简而言之,无论SammyJs如何,点击Enter键将始终提交表单(发出Http请求)。请注意,即使没有“提交”按钮,输入键也会提交表单!

你是否从#/ login Sammy路线返回false?