2011-11-04 61 views
0

我使用Drupal将一个Web应用程序设置为devloping。我的表单包含两个按钮,“提交”和“清除”。如果点击“清除”按钮,我想跳过所有的验证,包括所需的字段验证。有什么办法可以做到这一点?跳过“按钮”表单字段的验证

回答

1

当我需要一个表单重置按钮,这是我做的。

在您的形式(或form_alter)代码添加以下内容:

`$form['clear'] = array(
      '#name' => 'reset', 
      '#type' => 'submit', 
      '#value' => t('Reset'), 
      '#id' => 'edit-reset-button', 
      '#validate' => array('form_clear'), 
    );` 

添加清除功能(使用一个简单的取消设置和重定向):

`function form_clear($form, &$form_state) { 
    $form_state['rebuild'] = TRUE; 
    unset($form_state['values']); 
    drupal_goto($form['#action']); 
}` 
0

有一种方法可以完成你正在尝试做的事情,但它只适用于Drupal 7:当你定义“清除”表单域时,添加下面一行。

'#limit_validation_errors' => array() 

该属性的文档描述为:

提供作为应验证的$form_state['values']份部分的阵列,这意味着未列出部分不应进行验证。在“后退”按钮的情况下,这通常用于多步表单,例如,'#limit_validation_errors' => array()意味着不会验证任何内容,因为当前页面上的表单值将被丢弃。

the documentation制成的例子是关于一个“后退”按钮,但同样适用于“清除”按钮,在你的情况,因为所有输入的数值被丢弃,它没有意义报告未使用的值的错误。

Drupal 6不使用该表单字段属性。
没有办法避免值被验证,特别是如果有值被标记为必需的。你不能标记这些值是必需的,并且渲染表单域以包含红色星号(这是用来标记所需值的Drupal方法),但是你应该为另一个按钮编写验证处理程序,以验证所需的值是进入。

+0

@kiamlaluno ...什么ü说是正确的。在Drupal 7中,它是可能的,但我找到了drupal6的一个解决方案也... ..推荐这个..http://drupalmodules.com/module/skip-required-validation – user731060

+0

该模块的项目页面说:“This模块不支持,请改用http://drupal.org/project/skip_validation。“ – kiamlaluno