我的網站很簡單,它有文字說「點擊這裏」,點擊 將在屏幕中心打開一個模式類型的聯繫表單。如何在成功提交後關閉彈出窗口
當前表單提交時,它延遲1秒,然後調用submit.php 將數據發送到我的電子郵件。
而不是重定向到submit.php,我想保持在同一頁面上,並簡單地關閉彈出式聯繫表格 。
因此,它應該是這樣的:
點擊「點擊這裏」>詳細填寫彈出形式>點擊提交>表單提交後1秒鐘,然後完全關閉。(無需重新直接)
您可以查看我的演示站點here.
下面是HTML表單:
<form method="post" action="submit.php" id="contactform" class="signin">
<h1>On submit, this window should close</h1>
<input name="name" id="name" type="text" class="feedback-input" placeholder="Name" />
<input name="email" id="email" type="text" class="feedback-input" placeholder="Email" required pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)" />
<div class="antispam">
<br /><input name="url" type="hidden" /></div>
<textarea name="message" id="message" class="feedback-input" placeholder="Write away!" required></textarea>
<button id="flybutton">
<p>Submit here</p>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path id="paper-plane-icon" d="M462,54.955L355.371,437.187l-135.92-128.842L353.388,167l-179.53,124.074L50,260.973L462,54.955z
M202.992,332.528v124.517l58.738-67.927L202.992,332.528z"></path>
</svg>
</button>
</form>
你可以看到表單ID是「聯繫形式」和按鈕ID爲「flybutton」
以下腳本目前使用此數據,延遲1秒,提交表單,然後將 重定向到submit.php。
相反,我需要它延遲1秒,提交表單,然後關閉彈出窗口(和黑色背景)。
目前我有一個腳本,將通過Escape鍵關閉窗體,所以也許這可能以某種方式實現? 我覺得我的腳本需要以某種方式組合。
這裏是我的腳本有:
1秒的延遲+提交表單
<script>
var $btn = $('#flybutton');
$("#contactform").validate({
submitHandler: function (form) {
fly(form);
}
});
$btn.on('fliyingEnd', function (e, form) {
form.submit();
})
function fly(form){
$btn.toggleClass('clicked');
$btn.find('p').text(function(i, text) {
return text === "Fire!" ? "Fire!" : "Fire!";
});
setTimeout(function() {
$btn.trigger('fliyingEnd', [form]);
}, 1000);
}
</script>
關閉格式框(#登錄框)和黑色背景(#mask)通過ESC鍵:
<script type="text/javascript">
$(document).keyup(function(e) {
if (e.keyCode == 27) {
$("#mask").fadeOut(300);
}
if (e.keyCode == 27) {
$("#login-box").fadeOut(300);
}
});
</script>
其他用戶幫助這個腳本都Ø我不知道它的目的:
<script type="text/javascript">
$(document).ready(function() {
$('a.login-window').click(function() {
//Getting the variable's value from a link
var loginBox = $(this).attr('href');
//Fade in the Popup
$(loginBox).fadeIn(300);
//Set the center alignment padding + border see css style
var popMargTop = ($(loginBox).height() + 24)/2;
var popMargLeft = ($(loginBox).width() + 24)/2;
$(loginBox).css({
'margin-top' : -popMargTop,
'margin-left' : -popMargLeft
});
// Add the mask to body
$('body').append('<div id="mask"></div>');
$('#mask').fadeIn(300);
return false;
});
// When clicking on the button close or the mask layer the popup closed
$('a.closest, #mask').bind('click', function() {
$('#mask , .login-popup').fadeOut(300 , function() {
$('#mask').remove();
});
return false;
});
});
</script>
能否請你告訴我,爲了得到我所需要的功能要編輯的代碼?
我無法得到的jsfiddle工作,但here's my demo site again
UPDATE: 我已經納入AJAX,但我有一個問題。具體來說,表單提交但它仍然重定向。
包括在此我下面表格
<div id="result"></div>
,這裏是腳本..如何讓我沒有重新直接?
<script>
$(document).ready(function() {
/* Attach a submit handler to the form */
$("#contactform").submit(function(event) {
/* Stop form from submitting normally */
event.preventDefault();
/* Clear result div*/
$("#result").html('');
/* Get some values from elements on the page: */
var values = $(this).serialize();
/* Send the data using post and put the results in a div */
$.ajax({
url: "submit.php",
type: "post",
data: values,
success: function(){
alert("success");
$("#result").html('');
},
error:function(){
alert("failure");
$("#result").html('An error occurred');
}
});
});
});
</script>
非常感謝!
爲了不「刷新」的頁面,你需要使用AJAX調用 - 這將使一個請求,並沒有從當前頁面導航離去返回響應。你可以在這裏找到更多:http://api.jquery.com/jquery.ajax/。標準表單POST(您目前正在執行的操作)總是需要重新加載頁面 - 您總是可以重新加載相同的頁面。 – Carl 2015-02-24 20:45:51
您可以提供解決方案嗎?現在任何事情都會有幫助。與此同時,我會研究AJAX。謝謝 – Mathomatic 2015-02-24 21:24:56
沒關係,我在這裏找到了一個堅實的鏈接,應該有所幫助http://stackoverflow.com/questions/5004233/jquery-ajax-post-example-with-php/14217926#14217926 – Mathomatic 2015-02-24 21:34:30