今天调试了一个页面,一直JS抓不到回车事件,我采用的是MVC3 架构开发,一直很纳闷,源码如下:
<form method="get" id="stopform" target="_blank">
<div class="sForm">
<div class="sBar">
<div class="channelSelect"> <a class="curChannel" href="javascript:void(0)">图书</a>
<ul>
<li><a href="javascript:void(0)" onclick="SetAction(3);">图书</a></li>
<li><a href="javascript:void(0)" onclick="SetAction(2);">视频</a></li>
<li><a href="javascript:void(0)" onclick="SetAction(4);">活动</a></li>
</ul>
</div>
<input class="sTxt" type="text" maxlength="20" onkeydown="pushEnter()" style=" border-style:solid"/>
<input type="button" class="sBtn" value="搜 索"/>
</div>
</div>
</form>
js:
function pushEnter()
{
if (event.keyCode == 13) {
if (event.keyCode == 13) {
var keyword = $(".sTxt").val();
var type = $(".channelSelect .curChannel").html();
if (keyword == "" || keyword == null) {
alert("请输入关键字");
return;
}
if (isDangerous(keyword)) {
alert("搜索词包含危险字符!");
return;
}
if (type == "图书")
//动作1
else if (type == "视频")
//动作2
else if (type == "活动")
//动作3
}
}
}
每次回车都没有没有进入if (event.keyCode == 13) {这个判断,而且浏览器还自动跳转到一个新的页面(原来的页面)。
解决方案:
去掉原来的<form>标签,就是这个form标签搞的鬼。
还有一种判断回车的方法:
$(document).ready(function () {
$(document).keyup(function (event) {
if (event.keyCode == '13') {
var keyword = $(".sTxt").val();
if (keyword == "" || keyword == null) {
alert("请输入搜索关键字");
return;
}
if (isDangerous(keyword)) {
alert("搜索词包含危险字符!");
return;
}
if (keyword.length >20) {
alert("搜索的字符过长,请简化搜索字符");
return;
}
location.href = "/Video/SearchPage?keyword=" + keyword + "&&pageIndex=" + 1 + "&&condition=" + $(".curChannel").html();
}
});
});
html:
<input class="sTxt" type="text" name="sw" maxlength="20" style=" border-style:solid"/>
<input type="button" class="sBtn" value="搜 索"/>