2017-02-07 16 views
1

を「必要」の必然と連続したハンドリング:私のフォームPHP、HTMLと短い質問

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" name="formForm"> 

は一度だけ

<div id="xyz" style="display:none"> 
非常に最初の1の後に表示されているいくつかの類似の領域が含まれています

は、チェックボックスをクリックすると、

<div id="xyz" style="display:inline"> 

に変換されています。これはすべてうまくいっています。あまりにも、別の

<input type="radio" name="something2" required="required" value="1 etc." + additional PHP and JavaScript code /> 

が存在し、今

<input type="radio" name="something1" required="required" value="1 etc." + additional PHP and JavaScript code /> 

別のこのような領域を表示する]チェックボックスをクリックした:

非常に最初の領域は次のようなものが含まれています。換言すれば、これらの領域はすべて、それぞれ1つのHMTL5要求要素を含む。

今、「必要」によるもの(表示:なし)が表示されていないに検証することが、すべてのPHPの条件は、私は等の第二または第三を持っていない使用しているようです動作しません:

<?php 
    if (condition1 && condition2) { 
?> 
    <input type="radio" name="something" required="required" value="1 etc." + additional PHP and JavaScript code /> 
<?php 
    } elseif (condition3 && condition4) { 
?> 
    <input type="radio" name="something" value="1 etc." + additional PHP and JavaScript code /> 
<?php 
    } 
?> 

これはフォーム内の既存の "必須"などがこのPHP構造を覆い隠すように見えます。

この問題を別の方法で処理するためにJavaScriptコードを使用することができますが、この「必須」問題を純粋なHTML5として使用できないかどうかを確認したいと思います。

ここではこれまでに、図式コード:今すぐ

<?php 
    // some preconditions in PHP 
    // definitions of variables 
    // definitions of constants 
    // database connection 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <style> ... </style> 
    <script> ... </script> 
    </head> 
    <body ...> 
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" name="formForm" /> 
    <table cellspacing="0" id="formContainer"> 
    <?=siteHeader('some uestion, whatever')?> 
     <tr> 
     <td> 
      <table ... 1> 
      <... lots of HTML code, whatever ...> 
       <?php 
       if (condition1 && condition2) { 
       ?> 
       <input type="radio" name="something1" **required="required"** value="1" + additional PHP and JavaScript code /> 
       <?php 
       } elseif (condition3 && condition4) { 
       ?> 
       <input type="radio" name="something1" value="2" + additional PHP and JavaScript code /> 
       <?php 
       } 
       ?> 
      < ... lots of other HTML code, whatsoever ...> 
      </table> 

      <div id="xyz" style="display:none"> 

      <table ... 2> 
       <... lots of HTML code, whatever ...> 
       <?php 
        if (condition1 && condition2) { 
       ?> 
        <input type="radio" name="something1" **required="required"** value="1" + additional PHP and JavaScript code /> 
       <?php 
        } elseif (condition3 && condition4) { 
       ?> 
        <input type="radio" name="something1" value="2" + additional PHP and JavaScript code /> 
       <?php 
        } 
       ?> 
       < ... lots of other HTML code, whatsoever ...> 
      </table> 

      </div> 

      <handling of submit, reset etc.> 
     </td> 
     <tr> 
    </table> 
    </form> 
    </body> 
    <?php 
    // other PHP aspects, such as jQuery definitions 
    ?> 

、表1には、 "必須" の問題を処理することができます。必要な入力内のラジオボタンの値はデータベースに保存され、次にデータベース項目を読み取るための良いPHPテクニックを使用して再表示されます。そのため、無線フィールドのエントリが表示されます。

これまでのところうまくいきます。

しかし、表1の内容を変更して保存すると、表示されていない表2からの「必須」入力を記入するための注意フィールドが表示されます。

このHTML5オペレータの「強み」は、...を使用しているディスプレイの制限とは無関係か、まったく関係がないようです。

2番目(または3番目など)の「必須」入力の検証は、テーブル2が表示されて初めて実行されるという点でこの問題を解決する方法はありますか?

異なる入力を表示するためにPHPを使用する条件付きコンテキスト(「必須」フラグ付きのもの、それ以外のもの)は機能していないようです。それは "必要"によっても無効になっているようです。

この「必要な」ビジネスはほとんど文書化されていないようですが、この中であなたにはいくつかのヒントがありますか?

敬具

マルクス

答えて

0

display:none存在しますが、表示されていないものを持っていることを意図しています。私はこの特定の動作についてはわかりませんが、必要なフィールドが存在するので、ブラウザが空のままであればブラウザはユーザーがそうするかどうかにかかわらず不満を持ちます。

いくつかの回避策がありますが、そのほとんどは醜いものであり、維持するのが難しいものです。 required属性は非常にシンプルな形式で設計されており、ユースケースはそれらよりも進んでいるようです。私はあなたの検証ロジックをJavaScript関数で書くべきだと思います。

が実際にになると、それを行ういくつかのライブラリについて考えることができます。

+0

ご回答ありがとうございます、Rad80。 PHPベースの条件付き構造内で、他の「必須」入力フィールドの検証が停止されている実際の条件を見つけることができません。これは私の本質的な問題のようです。 – mtjmohr