2017-04-26 17 views
-1

我在彈出窗口中有一個簡單的表單。在我的表單中,我只有一個帶複選框標籤的複選框。我所做的是當用戶點擊標籤或複選框時,提交按鈕出現,用戶將能夠提交表單。此外,我想當用戶按下提交按鈕收集我的數據庫中的信息,然後關閉彈出窗口並在網站上正常地繼續而不離開。我不知道如何實現,但這是我迄今爲止所做的。請爲此我需要一些幫助。HTML表單 - 成功發佈表單但不離開頁面(NO-JQUERY)

1)我想成功提交表單並將信息收集到我的數據庫中。 2)我想關閉彈出窗口。 3)我不想離開頁面。

謝謝。

HTML:

<div id="popUp"> 
     <form id="myform" method="post" action="somepage.php" onsubmit="return closeWindow"> 
     <input type="checkbox" id="checkbox" name="checkbox"><label for="checkbox">Click to show Submit</label><br> 
     <input type="submit" id="submit-button" value="Submit" style="display:none"> 
    </form> 
    </div> 

CSS:

#popUp { 
    height:400px; 
    border:1px solid #000; 
    background:#e2e2e2; 
} 

JS:

var checkBox = document.getElementById("checkbox"); 
var submitButton = document.getElementById("submit-button"); 
var PopUpWindow = document.getElementById("popUp"); 

function checboxFunc() { 
    if (checkBox.checked) { 
     submitButton.style.display = "block"; 
    } else { 
     submitButton.style.display = "none"; 
    } 
} 
checkBox.addEventListener("click", checboxFunc); 


function closeWindow() { 
    PopUpWindow.style.display = "none"; 
    return false; 
} 
submitButton.addEventListener("click", closeWindow); 
+0

在[所以]你應該嘗試**自己寫代碼**。之後** [做更多的研究](//meta.stackoverflow。com/questions/261592)**如果您遇到問題,您可以**將您嘗試過的**發佈爲**清楚說明什麼不工作**並提供[** Minimal,Complete和可驗證的例子**](// stackoverflow.com/help/mcve)。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[遊覽]並閱讀[this](// meta.stackoverflow.com/questions/347937/)**。 –

+0

[如何使用jquery $ .post()方法提交表單值]的可能重複(http://stackoverflow.com/questions/25881204/how-to-use-jquery-post-method-to-submit-form -values) – MaxZoom

+0

你沒有告訴你到目前爲止取得了什麼成就,你需要準確的幫助? –

回答

0

阿賈克斯的發明來解決這個問題。 jQuery的包裝好聽喜歡:

結賬$.post

兩個建議,如果你正在做這種類型的請求,不使問題複雜化,並使用FORM標籤,只需使用的輸入。 其次發送JSON而不是表單數據,可能會混亂嘗試獲取正確的格式。

所以,你的客戶端會是這個樣子:

 



    var req_obj = { 
     "id":"ENTER_DATA", 
     "params":{ 
      "param_name1":"param_val1", 
      "param_name2":"param_val2" 
     } 
    }; 

    $.post(
     APP.ActionUrl, 
     JSON.stringify(req_obj), 
     function(data){ //this is the callback,do your confirmation msg }, 
     "json"); 

SERVER:

 


    $req_obj = json_decode(get_post_data()); 
     $param1 = $req_obj->params->param_name1; 


     function get_post_data(){ 
      $buf = ''; 

      if(($h_post = fopen('php://input','r'))){ 
       while(!feof($h_post)) 
        $buf .= fread($h_post,1024); 

       fclose($h_post); 
       return $buf; 
      } 
      else 
       return false; 
     } 

+0

謝謝@Yogistra Anderson的回答。你的答案可能會起作用,但我想要一個簡單的解決方案。 – NoName84

1

雖然可以使用AJAX,一個簡單的方法是把形式在另一個HTML文件將其加載到iframe中並設置表格的target="name_of_iframe"

您還必須擺脫onsubmit屬性,並添加一個事件偵聽器。像這樣。

yourpage.html

<iframe id="popUp" name="popup" src="path/to/form.html"></iframe> 

form.html

<form id="myform" method="post" action="somepage.php" target="popup"> 
    <input type="checkbox" id="checkbox" name="checkbox"><label for="checkbox">Click to show Submit</label><br> 
    <input type="submit" id="submit-button" value="Submit" style="display:none"> 
</form> 

yourpage.js

var checkBox = document.getElementById("checkbox"); 
var submitButton = document.getElementById("submit-button"); 
var PopUpWindow = document.getElementById("popUp"); 
var form = document.getElementById("myform"); 

function checboxFunc() { 
    if (checkBox.checked) { 
     submitButton.style.display = "block"; 
    } else { 
     submitButton.style.display = "none"; 
    } 
} 
checkBox.addEventListener("click", checboxFunc); 


function closeWindow() { 
    PopUpWindow.style.display = "none"; 
    return false; 
} 
form.addEventListener("submit", closeWindow); 

當是這種SUBM那麼somepage.php會加載,但只有在彈出窗口內,無論如何都會隱藏。所以你會有想要的效果。

+0

謝謝@Abraham Murciano。我試過你的解決方案,但是當我渲染頁面時,我什麼也看不見。 – NoName84

+0

我剛剛查過,顯然,你不能直接將HTML放入iFrame中。你需要一個單獨的文件。我會更新答案。 –

+0

感謝@Abraham Murciano Benzadon。我已檢查它,但我不知道它是否工作。它不會離開頁面,但是iframe仍然存在。它不會消失。 – NoName84