0

我对 Javascript 和 JQuery 很陌生。

MacOSX 10.8,Safari 版本 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 范围问题或我不熟悉的东西,但我是如此的菜鸟,我无法弄清楚。

4

3 回答 3

3

尝试将代码从keyup更改keydown为 之前执行。

$('form').bind("keydown", function(e) {
  var code = e.keyCode || e.which;
  if (code  == 13) {
    e.preventDefault();
    return false;
  }
});
于 2013-03-07T16:22:24.763 回答
3

尝试将您的代码包装在准备好的文档中。您可能在 DOM 创建元素之前尝试绑定(即$('form')返回一个空的 jQuery 对象,因为form尚不存在标签):

$(function() {
    $('form').bind("keyup", function(e) {
      var code = e.keyCode || e.which;
      if (code  == 13) {
        e.preventDefault();
        return false;
      }
    });
});
于 2013-03-07T16:25:17.720 回答
2

我同意上面关于确保您的代码在 $(document).ready 中并更改为 keydown 的答案。因为这些似乎都没有工作。在按 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/

于 2013-03-07T16:38:17.507 回答