【问题标题】:Running function on event事件运行函数
【发布时间】:2012-03-29 01:37:34
【问题描述】:

我正在尝试在单击下载按钮时运行此功能set_downloads($file[0]);,我不能只将它添加到代码中,因为它会运行。我可以将它放在不同的页面上并执行某种 onclick 事件来加载它,但我不知道该怎么做。

    <script type="text/javascript">
        var x = 0;
        var r = 0;
        function countdown() {
            if (x > 1) {
                x--;
                document.getElementById("button").innerHTML = x;
                r = setTimeout("countdown()",0);
            }
            else {
                clearTimeout(r);
                document.getElementById("button").innerHTML = "Click to download (<?php echo $filesize;?>) ";
                document.getElementById("button").disabled = "";
                document.getElementById("button").onclick = function() {
                    document.getElementById("button").disabled = "disabled";

                    document.getElementById("button").innerHTML = "Your download is starting..";

                };

            }
        }
        setTimeout("countdown()",1000);
    </script>
</head>
<body>
<label>
    <font size="5"></font>
</label>
<a href="http://IP/uploads/<?php echo $fullfile; ?>" >

    <button class="btn large orange" id="button" disabled="disabled">Click to download (<?php echo $filesize;?>) </button>

</a>

【问题讨论】:

  • 我有,我该怎么做?

标签: javascript jquery


【解决方案1】:
$(document).ready(function(){
    var x = 0;
    var r = 0;
    function countdown() {
        if (x > 1) {
            x--;
            document.getElementById("button").innerHTML = x;
            r = setTimeout("countdown()",0);
        }
        else {
            clearTimeout(r);
            document.getElementById("button").innerHTML = "Click to download (<?php echo $filesize;?>) ";
            document.getElementById("button").disabled = "";
            document.getElementById("button").onclick = function() {
                document.getElementById("button").disabled = "disabled";

                document.getElementById("button").innerHTML = "Your download is starting..";

            };

        }
    }
    setTimeout("countdown()",1000);

     $('.btn').click(function(){
        set_downloads($file[0]);
     });
});

此事件处理程序是您想要用来处理事件的。它使用回调,在单击按钮后调用该函数参数。

另一件事是,我不确定您的 $file[0] 变量,或者您的 set_downloads 函数的定义位置。你在哪里设置这些?

【讨论】:

  • 我已经添加了这个,但它似乎不起作用,你会把它放在我的代码中的什么地方?
  • set_downloads($file) 来自页面中包含的 PHP 函数。
【解决方案2】:

如果我错了,请纠正我,但您能否仅使用 $(document).ready(handler) 来确保在需要时加载 DOM,然后按照您的建议使用 onclick:

.click( [eventData], handler(eventObject) )

eventData 将传递给事件处理程序的数据映射。

handler(eventObject)每次触发事件时执行的函数。

编辑:

$('#button').click(function(){
  set_downloads($file[0]);
});

不确定您是否真的需要在 ready() 中使用它,但如果需要,您只需将 click() 函数附在此处即可:

$(document).ready( {

// Function for button goes here

});

编辑#2

$(document).ready({ 
   $('.btn').click(
     {
       $.ajax({ url: 'script.php?argument=value&foo=bar' });
)};

));

您可以将您的 php 脚本放在一个单独的文件中,并使用 ajax 和 url: 调用它,然后根据需要设置任何参数。考虑到我是移动设备并且很难看到括号,我不会复制和粘贴我输入的内容:/

你也可以看看这里,一个稍微不同的例子,仍然使用 Ajax 和 Jquery,但对于你想要的应用程序可能会更好:

Use Ajax to call PHP function for HTML button Onclick

【讨论】:

  • 希望示例有所帮助,与@Evan发布的基本相同
  • 这样的?
  • 不完全是,我将编辑并显示另一个对您来说可能更容易的选项。
  • 如果我是你,我真的会更深入地研究 jquery 和 ajax,从个人的角度来看,它在过去几周极大地改变了我的编程生活。我会说一个坚实的 2 个下午修补它会有很长的路要走 =) jquery.com
猜你喜欢
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多