我正在处理ASPX页面的JavaScript中的Long Press事件,但由于我没有太多经验,因为我对JavaScript有一些问题。我正在处理already asked here的问题。
当我运行代码时,我收到消息“$ is not defined”,当我将$(“Button1”)更改为(“Button1”)时,我收到消息,指出mouseup函数不存在。我遇到的主要问题是正确访问aspx控件。以下是我的代码。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(function () {
var pressTimer;
var longPress = 1000;
$("#<%= Label1.ClientID %>").bind("touchend", function (e) {
var d = new Date();
var timeDiff = d - pressTimer
if (timeDiff > longPress) {
document.getElementById("demo").innerHTML = "Mouse Up";
//actual logic here
}
return false;
});
$("#<%= Label1.ClientID %>").bind("touchstart", function (e) {
pressTimer = new Date();
return false;
});
});
</script>
<title>Long Press Testing</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:label ID="Label1" runat="server" text="Hold This Down" />
<br />
<p id="demo"></p>
</div>
</form>
</body>
</html>
感谢您的帮助。
[EDIT] - 原来我错过了ready语句,所以事件现在正在按照它应该开始。这是表现正常的最终版本。我也写这篇文章来处理iPad上的长按功能,所以如果有人试图这样做,这个代码是一个很好的起点。
答案 0 :(得分:3)
您在头部区域缺少jQuery脚本注册,如:
<script src="jquery.js"></script>
$符号是jQuery的标识符,而不是JavaScript的。
此外,您的按钮不起作用,因为您正在引用服务器按钮,但您必须提供JavaScript才能正常工作:
$("#<%= Button1.ClientID %>").mouseup(function () {
clearTimeout(pressTimer)
// Clear timeout
return false;
})
答案 1 :(得分:0)
看起来您正在尝试使用jQuery(或其他类似的框架)而不实际注册相应的脚本。您将需要<script/>
块或类似的构造。
答案 2 :(得分:0)
您的项目中似乎没有包含jquery。你可以使用下面的谷歌主机包括它,或去jquery.com下载并包含它。你想要将Head标签放在你写的其他脚本之上。另外,你可能想在id之前添加一个#,因为它使用了css选择器。此外,我不确定将执行多少代码,因为这是一个服务器按钮,将导致回发。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>