2012-03-02 27 views
0

我有一個包含20個窗體的網頁。如何在顯示div時顯示特定的php文件/ display:「block」

它們都隱藏起來,直到您從下拉框中選擇一個表單,然後表單出現。

每個表單都有自己的驗證。問題是我已經包含每個表單的驗證每個特定的表單在它自己的div。

所以我認爲,因爲每個div都隱藏了,所有其他隱藏表單的驗證將不起作用......我的錯誤如何:

任何方式只包括PHP文件包括當div不隱藏?

回答

3

簡答:網絡不能這樣工作。

較長的回答:瀏覽器不包含PHP,服務器包含它並將HTML中的所有輸出內容吐出到瀏覽器中。瀏覽器只能看到HTML輸出,因此它可以看到併發送所有內容。

有幾個解決方案。我建議確保你的每個div都有它自己的表單標籤,然後爲每個div添加一個隱藏的輸入,以便你的PHP腳本可以決定它應該做什麼驗證。事情是這樣的:

<div id="formfoo"> 
<form method="POST" action="/your-script.php"> 
<input type="hidden" name="validate" value="formfoo" /> 
<!-- rest of your form --> 
</form> 
</div> 

然後在PHP中:

if($_POST['validate'] == 'formfoo') { 
    // validate fields in formfoo here. 
} 

希望有所幫助。

+0

謝謝,一清二楚。想你給了我一個主意。問題是我發佈表單時已經調用了腳本,但爲什麼不把每個php驗證包含在發佈表單時調用的.php腳本中。最好的兩個世界呃... – 2012-03-02 16:14:12

+0

好的我需要一些幫助,驗證必須在表單發送之前出現,所以把它放在發佈部分WONT工作,因爲它說頭一次發送不能被修改。在我把它作爲一個包含在帖子中之前,我從來沒有遇到過這個問題,所以我認爲是這樣。任何想法的人? – 2012-03-02 16:46:15

+0

你能展示一些你的代碼嗎?通常,將邏輯(驗證)與顯示代碼分開會更好。 – Cfreak 2012-03-02 19:17:35

3

由於PHP已經處理完畢,將所有內容發送到瀏覽器,因此您只能使用javascript。做到這一點的方法是將表單的驗證綁定到特定表單的提交上,所以事件只會觸發正確的表單。

1

PHP沒有關於客戶端大小或不是什麼內容的概念。你必須考慮一種不同的方法。

幸運的是,還有其他方法。

由於每個div都包含一個表單,所以您可以簡單地讓所有表單包含一個隱藏字段(比如說formid或其他東西),您可以檢查以確定哪個表單已提交。

或者,您可以爲表單上的每個提交控件指定一個唯一的名稱,並檢查在服務器端觸發的提交按鈕的名稱。

1

額外的小費:

,你可以在隱藏div S中的表單元素設置爲禁用:

<input type="text" name="bla" disabled="disabled" /> 

,並通過JavaScript使他們一旦被顯示。

當提交表單時,不會發送禁用的元素。

....禁用的處理/啓用可能比分離該形式和製作的區別serversite像Cfreak建議更多的努力......