我正在使用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键提交。到目前为止已经发生了很多变化,所以回复并不是一个好的选择,所以我想提出一个如何解决问题的实际建议。
由于
答案 0 :(得分:0)
引用Html5规范中的4.10.22.2 Implicit submission
部分:
用户代理可以在每个表单中建立一个按钮作为表单 默认按钮。这应该是树顺序中的第一个提交按钮 其表单所有者是表单元素,但用户代理可以选择 另一个按钮,如果另一个按钮更适合该平台。 如果平台支持让用户隐式提交表单 (例如,在某些平台上按下“输入”键而不是文本 字段是隐式地提交表单),然后必须这样做 导致表单的默认按钮的激活行为(如果有) 运行
简而言之,无论SammyJs如何,点击Enter键将始终提交表单(发出Http请求)。请注意,即使没有“提交”按钮,输入键也会提交表单!
你是否从#/ login Sammy路线返回false?