我有 2 个按钮。
按钮 A:一个按钮。按钮 B:提交按钮。
我想要做的是,当用户点击按钮 A 时,它会向他发送一个链接。但在他点击按钮 A 后 8 秒后,他将无法使用按钮 B 提交。
我不确定它是否可能与PHP有关,是吗?如果没有,我将如何使用 jQuery 执行此操作?
也许使用 jQuery 设置点击日期,例如 var futureTime = time+8sec。if (!futureTime) { 回显这个 }
正如评论中指出的,您应该使用 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>
你应该能够做这样的事情:
$("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);