超时后重新启用提交按钮

时间:2012-11-20 11:03:43

标签: php javascript submit

submit_pdf按钮将信息保存到数据库中并避免多次点击,我最初在一次点击后禁用了提交按钮,但是现在我想在超时10秒后重新启用按钮。提交按钮被禁用的部分工作正常,但如果我尝试添加10秒的延迟,它似乎无法正常工作。如果你可以帮我解决这个问题,那将非常有用。 / p>

        echo '  <script language="JavaScript" type="text/javascript">
        //<![CDATA[
        window.open(\'./index_pdf.php?'.$query_string.'\',\'Warehouse_ST\',\'location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,toolbar=no\');
        id_form.submit_pdf.disabled=true;
        window.alert("Data is stored in the database, Please do no click on Submit again without changing any information");

        window.addEvent(\'domready''\',function() 
        {
        var subber = $_REQUEST["submit_pdf"];
        subber.addEvent( \'click'  ,function() ' 
        {
         subber.set( \'value','Submitting...''\' ).disabled = true;
        (function() { subber.disabled = false; subber.set(\'value','submit_pdf'\'); }).delay(10000); // how much time?  10 seconds
        });
        });


        //]]>
        </script>';

2 个答案:

答案 0 :(得分:1)

尝试使用setTimeout()

定义一个启用按钮的函数,然后设置一个setTimeout():

function enableButton(){
    $('#myButton').attr("disabled", false);
}

setTimeout(enableButton, 10000);

确保将函数名称不加引号而不使用“()”

答案 1 :(得分:0)

我建议编写JS代码(aleation的代码是正确的)和这个PHP代码。

PHP(将时间存储在会话var中):

session_start(); //At the beginning of the PHP file

define("TIMEOUT", 10); //10 sec

//Check timeout
if (isset($_SESSION['expire'])) {
    if ($_SESSION['expire']-time()>TIMEOUT) {
        unset($_SESSION['expire']);
    }   
}

//Allow to do submit after 10 sec
if (!isset($_SESSION['expire'])) {
    $_SESSION['expire']=time();

    //Your submit code
}

这是因为用户可以操纵JavaScript和HTTP消息,但是他/她无法操纵php代码。