【问题标题】:drupal 7 form validate add class?drupal 7表单验证添加类?
【发布时间】:2011-12-01 10:54:48
【问题描述】:

在我的表单中,我创建了一个复选框

$form['existing_customer'] = array(
'#type' => 'checkbox',
'#title' => t('Are you an existing customer?')
);

当我使用 hook_validate 验证它时,我想向标签添加一个类?任何想法如何实现这一目标?

【问题讨论】:

    标签: forms drupal-7 validation


    【解决方案1】:

    我无法想象你为什么要在验证函数中这样做,而且我认为有一种更简单的方法可以完成你想要做的事情。

    Drupal 表单中的每个元素都用一个容器(有一个 ID)包装。在这个容器内,永远只有一个标签。

    因此,如果您需要在 CSS 或 JS 中定位元素,您只需要执行以下操作:

    #existing-customer-edit label {
      // The rule
    }
    

    $('#existing-customer-edit label').something();
    

    如果您确实需要手动编辑标签,那么您将不得不为该元素提供自定义主题,请查看this example 了解更多信息(适用于 Drupal 6,但概念与Drupal 7)。

    【讨论】:

    • Drupal 会为您执行此操作,只需在您的验证函数中使用 form_set_error('existing_customer', 'The Error');
    • 我使用过 form_set_error 对文本字段很好,它添加了错误类,但似乎对复选框没有任何作用。
    • 啊,我明白了,原来是浏览器问题,你可以阅读更多关于它的信息here
    【解决方案2】:

    感谢 Clive 在表单验证功能中做了相当糟糕的工作

    $form_state['complete form']['myselectbox']['#title'] =  '<span class="privacy-error">you did not check me</span>';
    

    它不漂亮,但它有效!

    【讨论】:

      【解决方案3】:

      你可以在hook_validate()添加一个类:

      $form_state['complete form']['submitted']['existing_customer']['#attributes']['class'][] = 'class_name';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        相关资源
        最近更新 更多