0

我有 2 个按钮。

按钮 A:一个按钮。按钮 B:提交按钮。

我想要做的是,当用户点击按钮 A 时,它会向他发送一个链接。但在他点击按钮 A 后 8 秒后,他将无法使用按钮 B 提交。

我不确定它是否可能与PHP有关,是吗?如果没有,我将如何使用 jQuery 执行此操作?

也许使用 jQuery 设置点击日期,例如 var futureTime = time+8sec。if (!futureTime) { 回显这个 }

4

2 回答 2

0

正如评论中指出的,您应该使用 PHP 检查表单,因为可以关闭 JavaScript。尤其是在处理敏感数据时,人们会尝试通过 JavaScript 部分。

您可以使用以下方法来检查用户发送表单所花费的时间。如果它“过早”出现,您可以创建一个错误,否则您可以执行您的逻辑。您应该将此与建议的fmsf 之类的 JavaScript 部分结合起来,以避免大量发送表单。

PHP

// start the session to store the current time and a key
session_start();

// check if the key exists in the session and was the send with the form
if (isset($_SESSION['key']) &&
    isset($_POST['key']) &&
    $_SESSION['key'] == $_POST['key']) {

    // if the difference to "now" is more than 8 seconds include your logic
    if (8 < time() - $_SESSION['timestamp']) {
        // your logic
    } else {
        // create an error message
    }
}

// create a new key and store it together with the current timestamp
$key = uniqid('', true);
$_SESSION['key'] = $key;
$_SESSION['timestamp'] = time();

HTML

<form action="" method="post">
    <fieldset>
        <!-- include the key in a hidden field in the form -->
        <input type="hidden" name="key" value="<?php print $key; ?>">
        <input type="text" name="value" value="">
        <input type="submit" name="submit" value="submit">
    </fieldset>
</form>
于 2013-05-07T22:08:14.643 回答
0

你应该能够做这样的事情:

$("button#a").click(function(){
   $("button#b").prop('disabled', true);
   setTimeout(function(){ 
        $("button#b").prop('disabled', false); 
   }, 8000);
});

如果通过发送链接的意思是“打开一个新页面”,那么您可以将其添加到正在打开的页面上的加载脚本中:

   $("button#b").prop('disabled', true);
   setTimeout(function(){ 
         $("button#b").prop('disabled', false); 
   }, 8000);
于 2013-05-07T21:50:30.703 回答