您好,我希望在提交表單后禁用我的按鈕。禁用按鈕有效,但它不執行 php 代碼。
我嘗試了在互聯網上發布的不同腳本,但它們都做同樣的事情:在不執行 php 代碼的情況下禁用按鈕。因此,提交表單時,它需要回顯“test”,但不會回顯“test”。
當我洗掉“e.preventDefault();”行時 然后按鈕將不再禁用并且回聲仍然不顯示
代碼:
<!DOCTYPE html>
<html lang="en">
<body>
<h1>jQuery - How to disabled submit button after clicked</h1>
<form id="formABC" method="POST">
<input type="submit" name="submit" id="btnSubmit" value="Submit"></input>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<input type="button" value="i am normal abc" id="btnTest"></input>
<script>
$(document).ready(function () {
$("#formABC").submit(function (e) {
//stop submitting the form to see the disabled button effect
e.preventDefault();
//disable the submit button
$("#btnSubmit").attr("disabled", true);
//disable a normal button
$("#btnTest").attr("disabled", true);
return true;
});
});
</script>
<?php
if (isset($_POST['submit'])) {
echo "test";
}
?>
</body>
</html>
uj5u.com熱心網友回復:
e.preventDefault();完全停止表單提交。
如果你沒有那個,那么問題就變成了:
if (isset($_POST['submit'])) {
submit 事件觸發的 JS 在從表單收集資料提交到服務器之前運行。
您正在禁用提交按鈕,這會阻止它成為成功的控制元件。表單資料中僅包含成功的控制元件,因此您不再有submit資料項,$_POST因此該if陳述句回傳錯誤。
您可以使用隱藏的輸入來傳遞該資料,或者僅測驗請求是否為 POST。$_SERVER['REQUEST_METHOD']
uj5u.com熱心網友回復:
如果您想在執行 php 代碼后禁用該按鈕,那么您需要在頁面重新加載時使其發生。在“提交”事件期間運行的任何 JavaScript 都會在包含表單資料的請求發送到服務器以供 PHP 處理之前發生。并且您當前的 JavaScript 將禁用該按鈕,這意味著它的值不會提交給服務器,因此您的if陳述句將不會運行。
因此,如果我們去掉 JS 代碼,讓它正常提交,那么當 PHP 檢測到資料已提交時,您可以使用該邏輯要么根本不顯示按鈕,要么顯示它但將其禁用。
像這樣的東西應該可以作業:
<!DOCTYPE html>
<html lang="en">
<body>
<h1>jQuery - How to disabled submit button after clicked</h1>
<?php
if(isset($_POST["submit"])) {
echo "Thanks for submitting the form";
}
else
{
?>
<form id="formABC" method="POST">
<input type="submit" name="submit" id="btnSubmit" value="Submit"></input>
</form>
<?php
}
?>
<input type="button" value="i am normal abc" id="btnTest"></input>
</body>
</html>
當表單剛剛提交時,該版本將完全省略表單和按鈕。
(當然請注意,這實際上并不能阻止某人向您的服務器發送請求并提交資料......它只會阻止他們在之前從同一瀏覽器視窗提交后立即通過您的網頁的 UI 執行此操作. 因此,這是否足以滿足您的目的取決于您的應用程式的目標以及您需要考慮的安全級別或驗證注意事項。)
uj5u.com熱心網友回復:
要顯示您的文本“測驗”,有必要重新加載接收您定義的引數的頁面,因為您不會觸發頁面不重新加載的表單,因此它根本不會顯示任何內容。
您必須更正代碼的邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496997.html
標籤:javascript php html jQuery
