2011-08-16 18 views
0

我正在处理一个ASPX页面的JavaScript中的长按事件,但由于我没有太多的JavaScript经历有几个问题。我工作的问题是already asked here长按 - ASP.NET

当我运行代码时,我收到消息“$ 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> 

感谢您的帮助。

[编辑] - 结果我错过了ready语句,所以事件现在正在发射,因为它应该。这是行为正常的最终版本。我还写了这个处理iPad的长按功能,所以如果有人试图这样做,这个代码是一个很好的开始。

+0

什么是长按? –

+0

长时间按压是iPad一段时间内按住某个给定控件的想法。他们已将此作为右键单击功能的解决方法。这就是为什么我有touchend和touchstart而不是mousedown和mouseup。 –

回答

3

你缺少jQuery脚本登记头部分,如:

<script src="jquery.js"></script> 

$标志是jQuery的标识,而不是JavaScript的。

而且,你的按钮将无法工作,因为你参考服务器按钮,但你必须提供一个ID为JavaScript才能正常工作:

$("#<%= Button1.ClientID %>").mouseup(function() { 
     clearTimeout(pressTimer) 
     // Clear timeout 
     return false; 
    }) 
+0

包括jQuery的+1,但是你提到的选择器是错误的。 jQuery中的ID选择符以CSS中的'#'作为前缀。 – Jacob

+0

@Jacob谢谢你指出。更新 –

+0

好吧,这将解释为什么它不喜欢$语法。我将包含该参考文献,然后尝试使用与您的文章中的内容类似的块。如果明天这对我有效,我会加入回答。谢谢。 –

0

貌似你试图使用jQuery(或其他类似框架)而不实际注册适当的脚本。您将需要一个<script/>块或一些类似的结构。

0

看起来你没有在你的项目中包含jquery。你可以通过使用下面的谷歌托管来包括它,或者去jquery.com下载并包含它。你想要把Head标签放在你写的其他脚本上面。另外,您可能希望在id之前添加#,因为它使用css选择器。此外,即时通讯不知道多少代码将执行,因为这是一个服务器按钮,将导致回发。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>