diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-03-26 18:58:12 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-03-26 18:58:12 +0000 |
commit | c327b4d407c0fc3ea74037789214b23d2b35e9a0 (patch) | |
tree | b03f23a11760e8f511bf9d5b0d3781f5a16a4458 /modules/simpletest/tests/ajax_forms_test.module | |
parent | a7d001f7d18c738875fc846dbb719c4bbdf9272b (diff) | |
download | brdo-c327b4d407c0fc3ea74037789214b23d2b35e9a0.tar.gz brdo-c327b4d407c0fc3ea74037789214b23d2b35e9a0.tar.bz2 |
- Patch #684846 by effulgentsia, rfay, quicksketch, aspilicious: AJAX triggered by non-submit element fails if any elements are validated.
Diffstat (limited to 'modules/simpletest/tests/ajax_forms_test.module')
-rw-r--r-- | modules/simpletest/tests/ajax_forms_test.module | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/modules/simpletest/tests/ajax_forms_test.module b/modules/simpletest/tests/ajax_forms_test.module index 040a1d9b8..5de2b842c 100644 --- a/modules/simpletest/tests/ajax_forms_test.module +++ b/modules/simpletest/tests/ajax_forms_test.module @@ -24,6 +24,12 @@ function ajax_forms_test_menu() { 'page arguments' => array('ajax_forms_test_ajax_commands_form'), 'access callback' => TRUE, ); + $items['ajax_validation_test'] = array( + 'title' => 'AJAX Validation Test', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('ajax_forms_test_validation_form'), + 'access callback' => TRUE, + ); return $items; } @@ -340,3 +346,59 @@ function ajax_forms_test_advanced_commands_restripe_callback($form, $form_state) $commands[] = ajax_command_restripe('#restripe_table'); return array('#type' => 'ajax', '#commands' => $commands); } + + + +/** + * This form and its related submit and callback functions demonstrate + * not validating another form element when a single AJAX element is triggered. + * + * The "drivertext" element is an AJAX-enabled textfield, free-form. + * The "required_field" element is a textfield marked required. + * + * The correct behavior is that the AJAX-enabled drivertext element should + * be able to trigger without causing validation of the "required_field". + */ +function ajax_forms_test_validation_form($form, &$form_state) { + + $form['drivertext'] = array( + '#title' => t('AJAX-enabled textfield.'), + '#description' => t("When this one AJAX-triggers and the spare required field is empty, you should not get an error."), + '#type' => 'textfield', + '#default_value' => !empty($form_state['values']['drivertext']) ? $form_state['values']['drivertext'] : "", + '#ajax' => array( + 'callback' => 'ajax_forms_test_validation_form_callback', + 'wrapper' => 'message_area', + 'method' => 'replace', + ), + '#suffix' => '<div id="message_area"></div>', + ); + + $form['spare_required_field'] = array( + '#title' => t("Spare Required Field"), + '#type' => 'textfield', + '#required' => TRUE, + ); + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Submit'), + ); + + return $form; +} +/** + * Submit handler for the validation form. + */ +function ajax_forms_test_validation_form_submit($form, $form_state) { + drupal_set_message(t("Validation form submitted")); +} + +/** + * AJAX callback for the 'drivertext' element of the validation form. + */ +function ajax_forms_test_validation_form_callback($form, $form_state) { + drupal_set_message("ajax_forms_test_validation_form_callback invoked"); + drupal_set_message(t("Callback: drivertext=%drivertext, spare_required_field=%spare_required_field", array('%drivertext' => $form_state['values']['drivertext'], '%spare_required_field' => $form_state['values']['spare_required_field']))); + return '<div id="message_area">ajax_forms_test_validation_form_callback at ' . date('c') . '</div>'; +} |