2012-03-02 3 views
0

私は20のフォームを持つWebページを持っています。divが表示されているときに特定のPHPファイルを含める方法/ display: "block"

ドロップダウンボックスからフォームを選択してからフォームが表示されるまで、すべて非表示になります。

各フォームには独自の検証があります。問題は、それぞれのフォームの固有のフォームにそれぞれのフォームの検証を含めたことです。

だから、各部門が隠されているので、他のすべての隠しフォームの検証がうまくいかないと思った。

divが非表示になっていない場合、phpファイルのみを含める方法はありますか?

答えて

3

短い答え:ウェブはそのようには機能しません。

長い答え:ブラウザにはPHPが含まれていません。サーバーにはそれが含まれており、すべての出力をHTML形式でブラウザに送り出します。ブラウザはHTML出力を見て、すべてを見て送信します。

解決策がいくつかあります。あなたの各divに独自のフォームタグがあることを確認してから、それぞれに隠れた入力を追加して、PHPスクリプトがどのバリデーションを行うかを決定できるようにすることをお勧めします。このような何か:PHPで次に

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

:助け

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

希望。

+0

おかげで、フォームをseperatingとCfreakが提案のような区別のserversiteを作るよりもはるかに多くの努力かもしれません。あなたは私に考えを与えたと思う。問題は私がフォームを投稿するときに既にスクリプトを呼び出していたことですが、フォームをポストするときに呼び出す.phpスクリプトの中に各PHPバリデーションのインクルードを入れないだけです。両方の世界のベスト... –

+0

私はいくつかの助けが必要です、フォームが送信される前に確認が表示されなければならないので、ヘッダーは一度送信された変更することはできませんと言うようにWONT作業を投稿セクションに入れます。私はそれがこれであると仮定するので私が記事のインクルードとしてそれを置く前に私はこの問題がなかった。誰のアイデアですか? –

+0

コードの一部を表示できますか?一般に、ロジック(検証)と表示コードを分離する方がよいでしょう。 – Cfreak

3

PHPはすでにすべてのコンテンツをブラウザに送信するように処理されているので、javascriptのみで作業できます。それを行う方法は、フォームの検証をその特定のフォームのサブスクリプションにバインドすることです。そのため、イベントは正しいフォームに対してのみ起動します。

1

PHPには、クライアントのサイズで表示される内容と表示されない内容の概念がありません。あなたは別のアプローチを考える必要があります。

幸いにも、別の方法があります。

各divにフォームが含まれているため、すべてのフォームに、フォームが送信されたかどうかを確認するためにチェックできる隠しフィールド(formidなど)が含まれていることがあります。

また、フォームのすべての送信制御に一意の名前を付け、サーバー側でトリガーされた送信ボタンの名前を確認することもできます。

1

追加のヒント:

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

を、彼らが表示されたら、javascriptを介して、それらを有効にします。

あなたは無効に隠さdiv s内のフォーム要素を設定することができます。

無効な要素は、フォームの送信時に送信されません。

....有効/無効の取り扱いは十分...一日として明確

関連する問題