2016-06-17 5 views
1

このフォームを終了する前に最後の部分が1つありますが、テンプレートの機能は少し複雑になっています。基本的には、送信ボタンがそのコマンドを実行する前に「同意」チェックボックスが必要になります。PHPチェックボックス提出前の検証

$tbl->addRow(); 

$tbl->addCell($frm->addInput('checkbox', 'checkbox', 'check'), 
      'submit', 'data', array('colspan'=>4)); 

$tbl->addRow(); 

$tbl->addCell($frm->addInput('submit', 'submit', 'Submit'), 
      'submit', 'data', array('colspan'=>4, 'onclick'=>'if(!this.form.checkbox.checked)return false};',)); 

$frmStr = $frm->startForm('result.php', 'post', '', array('onsubmit'=>'return checkSubmit(this);')) . 
    $tbl->display() . $frm->endForm(); 




return $frmStr; 
} 

ここには投稿/チェックボックスのための私のPHPです。以下は、行/セル/入力を作成するために呼び出される関数です。この形式を使うと、単にタグをつけることができず、私はそれが私を抱きしめていると思います。

function addCell($data = '', $klass = '', $type = 'data', $attr_ar = array()) { 
    $cell = array(
     'data' => $data, 
     'klass' => $klass, 
     'type' => $type, 
     'atts' => $attr_ar 
    ); 

    if (empty($this->cur_section['rows'])) { 
     try { 
      throw new Exception('You need to addRow before you can addCell'); 
     } catch(Exception $ex) { 
      $msg = $ex->getMessage(); 
      echo "<p>Error: $msg</p>"; 
     } 
    } 

    // add to current section's current row's list of cells 
    $count = count($this->cur_section['rows']); 
    $curRow = &$this->cur_section['rows'][$count-1]; 
    $curRow['cells'][] = &$cell; 
} 

function addInput($type, $name, $value, $attr_ar = array()) { 
    $str = "<input type=\"$type\" name=\"$name\" value=\"$value\""; 
    if ($attr_ar) { 
     $str .= $this->addAttributes($attr_ar); 
    } 
    $str .= $this->xhtml? ' />': '>'; 
    return $str; 
} 

これが役立つ場合は、より多くのコードを共有してください。誰でもaddInput関数内の "array"引数の内側に適切にコードを書式設定する手助けはできますか?

+0

あなたはどのフレームワークを使用していますか? –

+0

申し訳ありませんが、フレームワークはどういう意味ですか?ちょうどPHPのテンプレート私はいくつかのjsの機能とソース これは私があなたが何を意味しているかの建物です:http://www.dyn-web.com/php/order_form/example2.php – sixfiveoh

+0

@sixfiveoh PHPフォームが提出される前に何もできません。 PHPはクライアントではなくサーバ上で動作します。 – Barmar

答えて

1

チェックボックスにrequired属性を追加する必要があります。

$tbl->addCell($frm->addInput('checkbox', 'checkbox', 'check', array('required' => 'required')), 
      'submit', 'data', array('colspan'=>4)); 
+0

Duh。うわー、本当にありがとう! – sixfiveoh

+0

アドオンの質問のビットは、入力の左側にテキストラベルを追加するためにこの関数を使用する方法はありませんか?今私は、入力ボックスの境界にあるセルにサポートテキストを置いて、ユーザーの説明を追加しています。 – sixfiveoh

+0

残りのクラスの仕方によって異なります。テキストとチェックボックスを含むスパンを作成し、それをセルの内容として使用できますか? – Barmar

2

$tbl->addCell($frm->addInput('checkbox', 'checkbox', 'check'), 
      'submit', 'data', array('colspan'=>4, 'required' => 'required')); 

によって

$tbl->addCell($frm->addInput('checkbox', 'checkbox', 'check'), 
      'submit', 'data', array('colspan'=>4)); 

を交換してください。しかし、簡単にバイパスすることができますされ、これはまだそうではない場合、私は、フォームが送信された後、あなたが検証のスクリプトを追加することをお勧め。

+0

私はフォームのラジオスイッチのいくつかのためにこれを使用し、正常に動作しましたが、チェックボックスのために動作していないようですか? $ tbl-> addCell($ frm-> addInput( 'checkbox'、 'checkbox'、 'check')、 'submit'、 'data'、array( 'colspan' => 4、 'required' =>真)); は機能していないようです。 FWIW、私は 'required' => 'required' => 'required'ではなく、無線スイッチに 'required' = trueを使用しました – sixfiveoh

+1

'required'属性はセルではなくチェックボックスに入れておく必要があります。 – Barmar

+1

@Barmarはい、同意します。パラメータ 'array( 'required' => 'required')'は、addInputメソッドの3番目の位置に配置する必要があります。私の悪い。 – keupsonite

関連する問題