JavaScript/jQuery跟踪图像按钮点击次数

JavaScript/jQuery跟踪图像按钮点击次数,javascript,jquery,html,Javascript,Jquery,Html,很抱歉问了这么一个新手问题,所以请耐心等待我;)我还在学习JavaScript/jQuery 我的目标是确保用户只单击图像按钮一次(以避免由于表单提交重复而产生重复值) 下面是我要做的方法: 由于按钮是一个图像,我不能在第一次点击按钮后就禁用它。我可以隐藏图像按钮,但我认为这不是一个好主意,因为用户可能想知道按钮发生了什么。所以我想我可以在JavaScript中创建一个全局变量来跟踪用户在重复的浏览器选项卡上单击按钮的次数 以下是我的示例代码: HTML <html> &l

很抱歉问了这么一个新手问题,所以请耐心等待我;)我还在学习JavaScript/jQuery

我的目标是确保用户只单击图像按钮一次(以避免由于表单提交重复而产生重复值)

下面是我要做的方法:

由于按钮是一个图像,我不能在第一次点击按钮后就禁用它。我可以隐藏图像按钮,但我认为这不是一个好主意,因为用户可能想知道按钮发生了什么。所以我想我可以在JavaScript中创建一个全局变量来跟踪用户在重复的浏览器选项卡上单击按钮的次数

以下是我的示例代码:

HTML

<html>
     <head><title>Global Variable Test 1</title></head>
     <body>
           <script type="text/javascript" src="clickCount.js"></script>
           <a href="#" onClick="countClicks();"><img src="arrow.gif" /></a>
     </body>
</html>

全局变量测试1
JavaScript

<!-- hide script from old browsers
  var counter = 0;
  function countClicks() {
        counter++;
        if(counter > 1)
       alert("Waah, stop clicking!");
        else
       alert('Number of clicks:' + counter);
  }
// end hiding script from old browsers -->

嗯,我能够计算一页上的点击次数,但是如果在同一页上打开两个选项卡,我似乎无法在下一页上“共享”我的变量(即,当我单击选项卡1上的图像按钮并在选项卡2中再次单击时,点击次数应该是2而不是1)。所以我的问题是:如何在JavaScript中创建一个全局变量,以便在浏览器选项卡间共享?有没有更好的方法确保用户只能单击一次图像按钮

任何帮助都将不胜感激

蒂亚

我的目标是确保用户只单击图像按钮一次(以避免由于表单提交重复而产生重复值)

使用以下语句:

    $('#mybuttonid').one("click", function() {
      //my action on click here
    });
它将只触发一次单击事件

如何在JavaScript中创建可在浏览器选项卡之间共享的全局变量

你不能。你可以用饼干代替

我的目标是确保用户只单击图像按钮一次(以避免由于表单提交重复而产生重复值)

使用以下语句:

    $('#mybuttonid').one("click", function() {
      //my action on click here
    });
它将只触发一次单击事件

如何在JavaScript中创建可在浏览器选项卡之间共享的全局变量


你不能。你可以改用cookies。

我认为更好的策略是禁用图像按钮,IMO。 您可以使它看起来被禁用(淡出,无响应),但不实际删除它-即淡出一点,忽略后续的点击

例如:

$('#yourButton').click(function(e){
    $(this).fadeTo(0.5);
    $.get("someURL", {buttonClick:1});
    $(this).unbind().bind('click', function(e){
        e.preventDefault();  
    });
});
编辑:
要创建全局变量,AFAIK您不能跨浏览器选项卡执行此操作,而是应该将其存储在会话中。您可以使用一点PHP或任何东西来完成此操作,并在单击按钮时使用AJAX进行查询(参见修订后的示例)。

我认为更好的策略是禁用图像按钮,IMO。 您可以使它看起来被禁用(淡出,无响应),但不实际删除它-即淡出一点,忽略后续的点击

例如:

$('#yourButton').click(function(e){
    $(this).fadeTo(0.5);
    $.get("someURL", {buttonClick:1});
    $(this).unbind().bind('click', function(e){
        e.preventDefault();  
    });
});
编辑:
要创建全局变量,AFAIK您不能跨浏览器选项卡执行此操作,而是应该将其存储在会话中。您可以使用一点PHP或其他工具来完成此操作,并在单击按钮时使用AJAX进行查询(参见修订后的示例)。

您可以通过
localstorage
共享数据。保存在一个选项卡中并获取它another@ant_Ti本地存储?你能解释一下吗?谢谢。您可以通过
localstorage
共享数据。保存在一个选项卡中并获取它another@ant_Ti本地存储?你能解释一下吗?谢谢。谢谢你的迅速回复。它不起作用了。请看是的,首先-您没有在左面板上选择jQuery框架,其次-在我的示例中输入错误:
finction->function
。是的,它可以工作!好把戏。但是如果我复制了标签,警报仍然会在第二个标签上弹出。干得好。谢谢你的快速回复。它不起作用了。请看是的,首先-您没有在左面板上选择jQuery框架,其次-在我的示例中输入错误:
finction->function
。是的,它可以工作!好把戏。但是如果我复制了标签,警报仍然会在第二个标签上弹出。干得好。我喜欢你的“淡出”形象。实际上,我正在使用ASP.NET进行此应用程序。上面的示例只是一个测试代码,如果成功,我将转换为实际代码。我使用JavaScript/jQuery的原因是为了避免服务器回发。顺便说一句,你的代码不起作用:'c啊,对不起。我的眼睛似乎跳过了你的建议部分。呵呵。我将尝试使用AJAX。谢谢。@AnneLagang你需要在你的提琴上将库设置为jQuery:)是的,我想出来了。哈哈,谢谢。我喜欢你的“淡出”形象创意。实际上,我正在使用ASP.NET进行此应用程序。上面的示例只是一个测试代码,如果成功,我将转换为实际代码。我使用JavaScript/jQuery的原因是为了避免服务器回发。顺便说一句,你的代码不起作用:'c啊,对不起。我的眼睛似乎跳过了你的建议部分。呵呵。我将尝试使用AJAX。谢谢。@AnneLagang你需要在你的提琴上将库设置为jQuery:)是的,我想出来了。哈哈,谢谢。