【问题标题】:Grab jQuery set CSS class抓取 jQuery 设置 CSS 类
【发布时间】:2012-07-20 07:48:00
【问题描述】:

我的情况是这样的:

我正在运行联系表格 7 (contactform7.com)。当用户没有设置必填字段并按下发送(表单是使用 jQuery 发送的,因此不会启动页面重新加载)时,Contact Form 7 脚本会向用户错过的输入字段输出“错误类”填写。

这个类 - Contact Form 7 设置的 - 我想抓住。但似乎 hasClass() 对此不起作用。它只适用于预定义的类。

我的结论是,当整个页面没有重新加载时,hasClass() 试图抓取的类在某些方面不可用。

如何解决这个问题,才能抢到课?

编辑:我有这个代码

$('input:text, textarea').click(function() {
        $(this).css({'background' : '#fff'});
    });

如果您错过了填写所需的输入/文本区域并按下“发送”,该字段会出现红色背景(这是正确的)。上面的代码使它们在点击时变为白色(这是正确的)。但是,如果您第二次忘记填写所需的输入/文本区域并按下“发送”,则您忘记输入内容的字段会显示为白色(背景)而不是红色(这是错误的)。

我的想法是上面的代码覆盖了其他 CSS 类。我该如何避免这种情况?

【问题讨论】:

  • 第一次提交报错时如何实现红色背景?请用html粘贴代码..
  • Contact Form 7 添加一个类 - 在提交时 - 到输入/文本区域 - 如果未设置必填字段 - 然后我在 CSS 中设置了一个“背景:红色”。

标签: jquery css


【解决方案1】:

正如您所说,您使用的是联系表格 7(我希望在 wordpress 中),您可以直接编辑联系表格 7 的 javascript。因此,要使 hasClass() 正常工作,您应该通过将其与某些事件(例如单击提交按钮)绑定来将其写入该文件。

对于错误样式,您不应添加新的内联样式,因为下次验证表单时,它将删除应用的错误类(如果不存在验证错误)并添加错误类(如果存在验证错误)但是您的样式将保留在那里并覆盖应用的类。因此,不要在文本区域或文本框的单击上添加新样式,而是删除为其应用的错误类

例如:-

$('input:text, textarea').click(function() {
        $(this).removeClass('your error class');
    });

【讨论】:

  • 啊,聪明!谢谢你。像魅力一样工作!
【解决方案2】:

正如评论中解释的那样,如果出现错误,它将为输入字段添加一个类。所以再写一个普通的类。

$('input:text, textarea').click(function() {
    $(this).removeClass('yourErrorClass').addClass('yourNormalClass');
});

.yourNormalClass{
    background : #fff
}

编辑:当给出错误时,您正在更改类并使其正常(背景:#fff),您正在更改元素的样式。元素的内联样式总是比类更受欢迎。这就是为什么第二次它将是白色的,因为 (background:#fff) 将被首选作为元素的样式。

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多