2016-06-17 10 views
1

У меня есть одна последняя часть перед тем, как закончить эту форму, но я думаю, что функции в шаблоне, который я использую, делают вещи немного сложными. В основном я хочу, чтобы флажок «согласен» был необходимо, прежде чем кнопка отправки выполнит свою команду.PHP Checkbox Validation before Submit

$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; 
} 

С удовольствием передадим больше кода, если это поможет. Может ли кто-нибудь помочь мне правильно форматировать код, чтобы вписаться внутри аргумента «array» внутри функции addInput?

+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)); 

по

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

Но, что можно легко обойти, я предлагаю вам добавить сценарий проверки после того, как форма была отправлена, если это еще не сделано ,

+0

Я использовал это для некоторых переключателей радиосвязи в форме, и он работал нормально, но, похоже, это не работает для флажка? $ tbl-> addCell ($ frm-> addInput ('checkbox', 'checkbox', 'check'), 'submit', 'data', array ('colspan' => 4, 'required' => правда)); , похоже, не работает. FWIW, я использовал 'required' => true для радиопереключателей, а не 'required' => 'required' – sixfiveoh

+1

Атрибут 'required' должен находиться в флажке, а не в ячейке. – Barmar

+1

@ Бармар Да, согласен. Параметр 'array ('required' => 'required')' должен быть помещен в третью позицию метода addInput. Виноват. – keupsonite