2013-03-10 29 views
0

我試圖在用戶離開頁面時以編程方式提交表單,而不管他們是否點擊了「提交」按鈕。過去我使用這種方法來提交函數內的表單,但由於某種原因,我無法使其與onclick一起工作。使用jQuery以編程方式提交表單時遇到問題

當用戶點擊「提交」按鈕時,表單被正確提交,所以html表單和php都是正確設置的。我使用jQuery-1.8.2

<form name="form2" id="form2" method="post" action="form2-exec.php"> 
    <!-- Form Elements --> 
    <a class="back" href="form1.php" onClick="submitForm()">BACK</a> 
    <a href="#" class="next"><input type="submit" value="SUBMIT" /></a> 
</form> 

<script language="javascript" type="text/javascript"> 
function submitForm() { 
    $("#form2").submit(); 
} 
</script> 

我也使用點擊功能

$(".submitForm").click(function() { 
$("#taste").submit(); 
}); 

和更換這一行的HTML嘗試:

<a class="back" href="form1.php" onClick="submitForm()">BACK</a> 

帶:

<a class="back submitForm" href="form1.php">BACK</a> 

回答

0

我改變一切必要的鏈接在HTML到提交按鈕解決了這個問題具有名稱屬性,並在PHP中添加一條語句來重定向用戶根據他們點擊的按鈕。

HTML

<input type="submit" name="whereto" value="BACK" /> 
<input type="submit" name="whereto" value="SUBMIT" /> 

PHP

// Insert Statement 
if ($_POST['whereto'] == 'BACK') { 
    header("location: form1.php"); 
} elseif ($_POST['whereto'] == 'SUBMIT') { 
    header("location: form3.php"); 
} 
1

它的一個棘手的情況。如果您提交表單,那麼您的後退按鈕的重定向將無法正常工作。如果您使用href重定向按鈕點擊,您的提交將無法正常工作,因爲點擊功能可以正常工作,您的下一頁將會加載。如何使用jquery發送ajax調用以將表單數據發送到服務器,並在回調函數中將頁面重定向到上一頁?

有關如何做到這一點,看看這個帖子的細節:Submit form using AJAX and jQuery

+0

現在,它至少使感覺它爲什麼不工作:-)你介意顯示我該怎麼做?我對阿賈克斯不是很熟悉。 – 2013-03-10 19:35:03

+1

這裏是你的問題的答案:http://stackoverflow.com/questions/425095/submit-form-using-ajax-and-jquery。 – Whizkid747 2013-03-10 19:42:50

+0

我似乎無法讓該帖子中的代碼正常工作。我恰好在使用第二個答案中提到的插件,但那只是在執行INSERT,但不適用於UPDATE函數。你有什麼機會告訴我如何使用AJAX提交它? (我不需要驗證表單)。 – 2013-03-11 01:26:59

1

#Whizkid是正確的點擊提交後回buttn將無法正常工作, 試試下面的方法,它利用jQuery的onbeforeunload事件測試如果表單已提交但與否;如果沒有它揭示了消息,通知未保存的數據的用戶在他們的形式:

$(function() { 
     // Set the unload message whenever any input element get changed. 
     $('input').change(function() { 
      setConfirmUnload(true); 
     }); 

     // Turn off the unload message whenever a form get submitted properly. 
     $('form').submit(function() { 
      setConfirmUnload(false); 
     }); 
    }); 

    function setConfirmUnload(on) { 
     var message = "You have unsaved data. Are you sure to leave the page?"; 
     window.onbeforeunload = (on) ? function() { return message; } : null; 
    } 
+0

有沒有辦法將它與提交結合起來,以便他們可以點擊將其保存在彈出的消息中?另外,既然有Input和Select兩個元素,我只想驗證我是否應該有兩個單獨的更改函數,或者有兩種方法可以將它們合併爲一個函數? – 2013-03-11 01:42:06

+0

請重新說明第一個問題,以使其對第一個問題更清楚,但第二個問題必須引入第二個函數,所有你要做的就是$('input','select')change(function(){setConfirmUnload( true);} – PowerK 2013-03-11 07:39:26

+0

就第一個問題而言 - 當消息彈出時,有2個按鈕'Leave this page'和'Stay on this page',用戶必須點擊'Stay on this page',然後點擊點擊「提交」按鈕,我想知道是否有一種方法可以將其更改爲只需要一次單擊(可能帶有jQuery對話框消息?),而不是「保留在此頁面上」,這將是一個「提交」按鈕?第二個問題 - 看起來比我所做的要好得多;-) – 2013-03-11 07:48:23