我想在提交表单后进行验证,但在使用dupery以drupal格式提交表单之前也要验证

时间:2016-10-13 10:12:43

标签: javascript php jquery forms drupal

在联系表格中有一个带有两个值电子邮件和电话的单选按钮我想在提交表单后验证,但它也在使用dupery以drupal表单提交表单之前验证。 在我的形式,当我点击电子邮件它显示一个电子邮件文本字段与错误和隐藏手机文本字段相似我选择手机它显示电子邮件和电话文本字段但电话文本字段只显示错误的电子邮件字段它不显示错误现在我完成这项工作我的prblm是在点击提交按钮之前我更改电子邮件和电话值它显示错误但我想在提交表单后显示错误..

2 个答案:

答案 0 :(得分:0)

您应该可以使用字段上的#states属性来执行您的要求。您可以添加多个验证,它将为您创建所有jquery。

e.g:

// Show the email field when email selected for radiofld
$form['email'] = array(
  '#type' => 'textfield',
  '#title' => t('Email'),
  '#states' => array(
    'visible' => array(
      array(
        ':input[name="radiofld"]' => array('value' => 'email'),
      ),
    ),
  ),
);

// Show error message for phone field
$form['phoneerr'] = array(
    '#type' => 'markup',
    '#markup' => 'No Phone selected',
  '#states' => array(
    'visible' => array(
      array(
        ':input[name="radiofld"]' => array('value' => 'email'),
      ),
    ),
  ),
);  

// Show the phone field when phone selected for radiofld
$form['phone'] = array(
  '#type' => 'textfield',
  '#title' => t('Phone'),
  '#states' => array(
    'visible' => array(
      array(
        ':input[name="radiofld"]' => array('value' => 'phone'),
      ),
    ),
  ),
);

// Show error message for email field
$form['emailerr'] = array(
    '#type' => 'markup',
    '#markup' => 'No Email selected',
  '#states' => array(
    'visible' => array(
      array(
        ':input[name="radiofld"]' => array('value' => 'phone'),
      ),
    ),
  ),
);  

答案 1 :(得分:0)

如果你真的坚持独立使用jquery,那么你应该把它放在一个函数中并使用onclick / onchange属性调用它:

$form['wayToContact'] = array(
       '#type' => 'radios',
       '#validated' => TRUE,
       '#title' => t('Best way to contact'),
       '#default_value' => 'Email',
       '#options' => array('Email' => $this->t('Email'), 'Phone' => $this->t('Phone')),
       '#attributes' => array(
            'class' => array('required')
            'onchange' => 'yourFunction(this)',
            'onclick' => 'yourFunction(this)'
       )
     );