2016-10-13 2 views
1

두 개의 값 전자 메일 및 전화가있는 단일 라디오 단추가있는 문의 양식에서 양식 제출 후 유효성을 검증하려고하지만 또한 drupal 양식의 jquery를 사용하여 양식을 제출하기 전에 유효성을 확인하십시오. 양식을 사용하여 전자 메일을 클릭하면 오류가있는 전자 메일 텍스트 필드 하나가 표시되고 텍스트 필드는 숨길 수 있습니다. 전자 메일과 전화 텍스트 필드 모두 표시하지만 전화는 전화를 선택합니다. 텍스트 필드에만 전자 메일 필드에 대한 오류를 보여줍니다 그것은 오류를 지금 보여주지 않습니다.이 작품을 완료했습니다 내 prblm은 제출 버튼을 클릭하기 전에 전자 메일 및 전화 값을 변경하면 오류가 표시되지만 양식을 제출 한 후에 오류를 표시하려고합니다.양식 제출 후 유효성을 검사하고 싶지만 drupal 양식의 jquery를 사용하여 양식을 제출하기 전에 유효성을 검사하십시오.

+0

코드를 보일 수 있는가? 당신이 벌써 한 일은 ... Karthika – Karthi

+0

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

답변

0

:

$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가 생성됩니다.

예컨대 :

당신이 정말로 독립적으로 jQuery를 사용하여 다음 함수에 넣어와 온 클릭/onchange를 속성을 호출해야 주장하는 경우
// 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

Angus Walker 고맙습니다.하지만 jquery를 사용하여 vaidate하고 싶습니다 ... 도와 주실 수 있습니까? – Karthiga

+0

왜 jquery를 직접 작성 하시겠습니까? 위의 예에서 Drupal은 jquery를 사용하여 사용자를 대신하여이를 작성합니다! –

관련 문제