我对Javascript和JQuery很新。
MacOSX 10.8,Safari Version 6.0.3(8536.28.10)
我有一个非常简单的HTML页面,其中包含一个表单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="wufooTheme8/css/theme.css" type="text/css" />
<title>
Course Search
</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://yandex.st/json2/2011-10-19/json2.min.js"></script>
<script type="text/javascript" src="application2.js"></script>
</head>
<body>
<form method="post" id="class-find">
<label>Class Name</label> <input type="text" name="classname" value=""/>
<input type="button" value="Go" onclick="classFind(this.form)" />
</form>
</body>
在我的application2.js文件中,我有2个调用/函数:
$('form').bind("keydown", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
function classFind(frm) {
alert('submitted!');
}
第一个应该是停止输入密钥从提交表单到默认操作,我从SO上的另一个答案中获取但是它不起作用。第二个功能只是在按下提交按钮时显示警告,并且它正在工作。我确定有一些javascript范围问题或我不熟悉的东西,但我是一个无法解决它的菜鸟。
答案 0 :(得分:3)
尝试将代码从keyup
更改为keydown
,因为之前执行过。
$('form').bind("keydown", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
答案 1 :(得分:3)
尝试将文档中的代码包装好。你可能在DOM创建元素之前尝试绑定(即$('form')
返回一个空的jQuery对象,因为还没有form
标记存在):
$(function() {
$('form').bind("keyup", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
});
答案 2 :(得分:2)
我同意上面的答案,确保您的代码在$(文档).ready中并更改为keydown。因为这些似乎都不起作用。在您按Enter键之前,您是否确保表单具有焦点?如果您只是加载页面并按Enter键,您的keyup / keydown处理程序将不会触发,因为您将事件处理程序绑定到表单。尝试单击输入字段,然后按Enter键查看密钥处理程序是否会触发。
$(document).ready(function(){
$('form').bind("keydown", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
console.log('stop');
return false;
}
});
});
这是一个小提琴: http://jsfiddle.net/aCL2v/