2016-10-13 9 views
1

電子メールと電話の2つのラジオボタンが1つある連絡フォームでフォームの提出後に検証したいが、また、drupalフォームでjqueryを使用してフォームを提出する前に検証してください。 私のフォームでは、電子メールをクリックすると、1つの電子メールテキストフィールドにエラーが表示され、電話テキストフィールドも隠すように電話が選択されます。テキストフィールドのみそれは電子メールフィールドのエラーを示していますそれはエラーを表示していません今私はこの仕事を完了私のprblmは送信ボタンをクリックする前に私は電子メールと電話の値を変更するエラーを示していますが、フォームの提出後に検証したいが、drupalフォームでjqueryを使用してフォームを提出する前に検証する

+0

はあなたのコードを表示することができますか?あなたはすでに何をしていますか?Karthika – Karthi

+0

https://jsfiddle.net/8wc8an4q/ – Karthiga

答えて

0

あなたは本当に、あなたが機能でそれを入れて、onclickの/のonchange属性でそれを呼び出す必要があり、独立してjqueryのを使用して主張すれば:

$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)' 
     ) 
    ); 
0

フィールド上の#statesプロパティを使用して、求めていることを行うことができます。複数のバリデーションを追加すると、すべてのjqueryが作成されます。

例えば:

// 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'), 
    ), 
    ), 
), 
); 
+0

アンガスウォーカーありがとうございましたが、私はjqueryを使ってそれを払いたいと思っています。 – Karthiga

+0

なぜjqueryを自分で書きたいのですか? 上記の例では、Drupalはjqueryを使用して、あなたのために書き込みます! –

関連する問題