Jquery Keyup()示例不在服务器上运行

时间:2011-09-08 19:38:25

标签: jquery windows-server-2003

我试图在我做的一点点搜索中使用keyup函数,但是通过服务器上的文件并通过IE8和FF访问页面,keyup功能似乎不起作用。为了测试它,我借用了jQuery网站上的代码将它放在服务器上的代码(它是Windows Server 2003 R2)。但是,此示例也不起作用(http://api.jquery.com/keyup/)。我注意到它有一行

<script type="text/javascript" src="/scripts/events.js"></script>

我最初的想法是,“我的工作不正常,因为我错过了这个事件档案!”但谷歌搜索后,我认为情况并非如此。在我的代码中,我链接到jQuery的下载副本,我也尝试通过googleapi的副本链接它,任何时候都没有运气。关于为什么keyup函数可能无法在服务器上运行的任何想法?

2 个答案:

答案 0 :(得分:0)

该页面上的代码似乎有点破碎。具体来说,似乎使用了最新jQuery中缺少的print函数(可能它包含在缺少的events.js脚本中?)

我做了一些小改动来制作一个正常工作的版本(请注意我使用的是Google托管的jQuery;您可以在本地版本中指出它,它应该仍能正常工作。)

<!DOCTYPE html>
<html>
<head>
  <style>
fieldset { margin-bottom: 1em; }
input { display: block; margin-bottom: .25em; }
#print-output {
  width: 100%;
}
.print-output-line {
  white-space: pre;
  padding: 5px;
  font-family: monaco, monospace;
  font-size: .7em;
}

</style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
</head>
<body>
  <form>
  <fieldset>
    <label for="target">Type Something:</label>
    <input id="target" type="text" />
  </fieldset>
</form>
<button id="other">
  Trigger the handler
</button>
<div id="output"></div>
<script>
var xTriggered = 0;
$('#target').keyup(function(event) {
  if (event.keyCode == '13') {
     event.preventDefault();
   }
   xTriggered++;
   var msg = 'Handler for .keyup() called ' + xTriggered + ' time(s).<br />';
   $('#output').append(msg);
});

$('#other').click(function() {
  $('#target').keyup();
});</script>

</body>
</html>

在这个更改的版本中,我使用jQuery的append()函数将调试消息输出到我在文本框下面添加的新div。当您在文本框中键入内容时,您应该会看到在那里注册的按键事件。

答案 1 :(得分:0)

您正在观看的元素是否在页面加载后动态生成?如果是这样,你需要使用live:

$("#element").live('keyup',function(e) {
  var keycode = e.keyCode ? e.keyCode : e.which;
});

否则尝试:

$("element").keyup(function(e) {
  var keycode = e.keyCode ? e.keyCode : e.which;
});

另外,确保选择正确的元素(输入框?)并仔细检查选择器是否正确。在不同的浏览器中可能会出现一些问题,处理e.keyCode或不处理。如果e.keyCode不存在,上面的例子还检查e中的密钥代码值。