我會做的是創建另一個.php文件(例如preview.php
),你可以(預)通過Ajax提交表單。該文件將基本上echo
你的表單字段,如$_POST['recipient']
等
的POST
值。此外,相同的文件(preview.php)內,你可能有一些鏈接,要麼提交實際形式或接近的fancybox。
這裏是preview.php文件的例子
<?php
function check_input($data){
// sanitize your inputs here
}
$field_01 = check_input($_POST['field_01']);
$field_02 = check_input($_POST['field_02']);
$field_03 = check_input($_POST['field_03']);
// ... etc
?>
<div style="width: 340px;">
<h3>This is the preview of the form</h3><br />
<p>Field 01 : <?php echo $field_01;?></p>
<p>Field 02 : <?php echo $field_02;?></p>
<p>Field 03 : <?php echo $field_03;?></p>
<a class="submit" href="javascript:;">submit</a>
<a class="closeFB" href="javascript:;">back to edit</a>
</div>
通知style="width: 340px;"
這樣的fancybox將瞭解要顯示的大小盒(height
將auto
)
然後在你的主頁面,添加預覽按鈕
<a class="preview" data-fancybox-type="ajax" href="preview.php">Preview</a>
通知data-fancybox-type="ajax"
屬性,它告訴fancybox type
的內容。
然後腳本通過AJAX提交(預覽)形式:
jQuery(document).ready(function ($) {
$('.preview').on("click", function (e) {
e.preventDefault();
$.ajax({
type: "POST",
cache: false,
url: this.href, // our preview file (preview.php)
data: $("#message_form").serializeArray(), // all the fields in your form (use the form's ID)
success: function (data) {
// show in fancybox the returned data
$.fancybox(data,{
modal : true, // optional (no close button, etc. see docs.)
afterShow: function(){
// bind click to "submit" and "close" buttons inside preview.php
$(".submit, .closeFB").on("click", function(event){
if($(event.target).is(".submit")){
$("#message_form").submit(); // submit the actual form
}
$.fancybox.close(); //close fancybox in any case
}); // on click
} // afterShow
}); // fancybox
} // success
}); // ajax
}); // on click
}); // ready
當然,在http://www.picssel.com/playground/jquery/postPreview_05Jun13.html的DEMO。
注意:
- 這是對的fancybox v2.1.4 +
.on()
需要jQuery的V1。7+
來源
2013-06-06 07:27:00
JFK
工作就像一個魅力 - 太感謝你了!我朝着錯誤的方向前進,你救了我幾個小時的工作! –
一個問題....當我選擇「返回編輯」我的形式消滅了,當我真的想保持什麼形式了。另外,提交併不實際提交表單 - 它只是將我帶回原始表單! –
@KathyLyons:在我的演示,當你按下「退回修改」的形式保留,你可以改變和重新預覽OEVER一遍又一遍......並提交它實際上提交表單編輯的值。我不知道你在做什麼不同。 – JFK