[英]how can i make my submit button clickable once and still execute my php?
我試過解決這個問題,但無論我嘗試什么,按鈕都不會保持禁用狀態超過一秒鍾,也不會執行我的 PHP 腳本。
我的網頁上有一個重啟按鈕,點擊后會向管理員發送一封電子郵件,讓他們知道已請求重啟。 我希望它能夠被點擊一次,然后變灰以防止多次點擊。 我希望它在一段時間后再次活躍
如何讓重新啟動按鈕變為可點擊一次(以排除執行過多腳本的可能性)並仍然執行 PHP 腳本?
這是我的代碼:
<form action=index.php method= "post">
<input type="submit" value="Request Restart" id="alertTimerButton" name="clickMe" onclick="countClicks();"/>
<?php
if (isset($_POST['clickMe']))
{
exec("/anaconda3/bin/python /Users/shoot_station_5/Sites/simpleblogs/restartemail.py \"$input_val\"");
} else{
}
我嘗試添加各種 javascript,例如:
function disable()
$(document).ready(function(){
$('.once-only').submit(function(){
$(this).children('button').prop('disabled', true);
alert("Thankyou a restart has been requested.");
});
});
和
<script type="text/javascript">
var ClickCount = 0;
function countClicks() {
var clickLimit = 1; //Max number of clicks
if(ClickCount>=clickLimit) {
alert("a restart has already been requested");
return false;
}
else
{
ClickCount++;
alert("Thankyou a restart has been requested.");
return true;
}
}
你必須改變
onclick="countClicks();"
到
onclick="return countClicks();"
那么您的 2. 解決方案確實有效。
您的 1. 解決方案有多個錯誤。 不要將代碼包裝在 disable() 函數中。 並且在“按鈕”之前缺少一個#。
我會這樣做:
onclick="disabled=true;"
就夠了。
因為您評論說您沒有運行第二個解決方案,所以這里是代碼:
var ClickCount = 0; function countClicks() { var clickLimit = 1; //Max number of clicks if (ClickCount >= clickLimit) { alert("a restart has already been requested"); return false; } else { ClickCount++; alert("Thank you a restart has been requested."); return true; } }
<form action="#" method="post"> <input type="button" value="Request Restart" id="alertTimerButton" name="clickMe" onclick="return countClicks();"/> </form>
那么按鈕按預期工作。 由於您在此處不使用 ajax/xhr,因此您會在提交表單時重新加載頁面。 這就是按鈕被重置的原因。 如果您不想使用 ajax/xhr,只需保存您的“狀態”和會話變量中的時間,然后根據它更改按鈕屬性。 你的 html/php 看起來像這樣
session_start();
if (isset($_POST['clickMe'])) {
$_SESSION['restarted'] = time();
}
session_write_close();
$timeout = 300; // 5 min
$timer = time();
$disabled = false;
if (isset($_SESSION['restarted']) && ($timer - $_SESSION['restarted']) < $timeout) {
$disabled = true;
}
.. (html stuff) ...
<form action=test.php method= "post">
<input type="hidden" name="timer" value="<?php echo (isset($_SESSION['restarted']) ? $_SESSION['restarted'] : null)?>" />
<input type="submit" <?php echo ($disabled ? 'disabled="true"' : null)?> value="Request Restart" id="alertTimerButton" name="clickMe"/>
</form>
而你的 js 是這樣的(如果你使用 jquery)
$(document).ready(function(){
$('form').on('submit', function(e){
alert("Thankyou a restart has been requested.");
return true;
});
var restart_time = parseInt($('input[name="timer"]').val());
var cur_time;
setInterval(function(){
cur_time = Math.floor(Date.now() / 1000);
if (cur_time - restart_time > 300000) {
$('#alertTimerButton').prop('disabled', false);
}
}, 5000);
});
編輯:我稍微修復了代碼並在 javascript 中添加了時間檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.