【问题标题】:Remove the red outline on form elements that fail validation in drupal删除在 drupal 中验证失败的表单元素上的红色轮廓
【发布时间】:2010-04-30 16:50:36
【问题描述】:

当一个drupal 表单验证失败时,它会用红色边框包围的验证失败的元素重新绘制。 Drupal 通过将error 类添加到输入元素,并在system.css 中的 input.error 元素上指定一个 2px 的红色边框来做到这一点。

在不修改此样式表的情况下,如何仅删除特定表单上的红色边框,同时在站点的其余部分使用默认行为?

我相信解决方案可能需要使用自定义 theme_form_element,但我不知道如何仅自定义单个表单。

请注意,我想这样做而不必求助于这个 jQuery 技巧(确实有效):

$("#edit-name").removeClass('error');

【问题讨论】:

  • 虽然我可以在 CSS 中更改这些特定元素的边框颜色,但我无法恢复 input 元素的默认边框。所以我可以让边框变成绿色而不是红色,但我无法恢复正常的浏览器样式。因此,除非我遗漏了一些明显的东西,否则我认为不存在针对这个特定问题的纯 CSS 解决方案。

标签: drupal drupal-themes drupal-theming drupal-forms


【解决方案1】:

您需要从表单项中删除错误类。这可以通过覆盖主题函数来完成,在theme_textfieldtheme_textarea ...(每种类型都有一个)

查看包含错误类的$element['#attributes']['class']

编辑
要为特定的表单元素或表单执行此操作,您可以使用 #theme 属性或要更改主题功能的表单或元素。

【讨论】:

  • 这可以在模块内部完成吗?我似乎在让它工作时遇到了一些麻烦。
  • 您的方法有效(将其放在主题中),但它会修改我网站上的所有表单,而不仅仅是特定的表单。我想我现在会坚持使用我的 jQuery 解决方案,即使我不喜欢它。不过感谢您的帮助!
【解决方案2】:

最简单的方法不是尝试修改 Drupal 发现的标记,而是更改与 error 类相关的样式。

您可以在不修改 system.css 的情况下做到这一点。只需在您的主题中添加一个新样式表(或使用现有的!)。使用 CSS 的级联特性来改变错误元素的出现方式。添加类似:

.error {
  border: 0;
}

...你就完成了。

要仅定位一个特定表单,请添加另一个选择器,如下所示:

#my-specific-form .error {
  border: 0;
}

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多