1、问题
在文章列表页按下回车,会跳转到错误页面,如下:
![v2-785b10a12dd1f9d6fba1babdba7e4f09_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=91fed047-1d30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-785b10a12dd1f9d6fba1babdba7e4f09_b.jpg)
这是一个意料外的状况,感谢 @SummerEnds 发现问题。
2、解决
1)原来的设计只考虑了“开始搜索”的点击——当点击这个按钮时,会触发一段js 函数 start_search(),去收集页面表单上的数据,然后一起以ajax的方式post。
而没有想到回车,竟然也会触发表单自动提交。
![v2-32ed24ae4567e041aa5dbfdc56c0aed4_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=91fed047-1d30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-32ed24ae4567e041aa5dbfdc56c0aed4_b.jpg)
原因是跟前端form有关:
form表单中,如果当前表单只有一个input输入框时,单击回车会自动提交当前表单。
解决办法有很多种,图省事,这里简单加了一行:
<input style="display:none" type="text">
2)至此,在搜索页面回车不会触发表单的自动提交,但是看到主流网站都支持“回车搜索”,所以还需要修改。
实现方法也很多,一种是在input里面绑定js事件,另一种是在script里面写js函数去监听特定的事件。
我的<input>标签是由Django将form的每一个Fileld对象自动渲染而来的,想尽量不动已有的代码,所以选择了后面一种:
87 $('#form1').bind('keydown',function(event){
88 if(event.keyCode == "13")
89 {
90 start_search();
91 }
92 });
然后就成功修复了!
[后续]
涉及模板的修改在生产环境要生效,需要重启应用。仅仅把代码拉下来,是检测不到的。
暂时先手工重启吧~