0

我的情况是这样的:

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

这个课程 - 联系表格 7 已经设置 - 我想抓住。但似乎 hasClass() 对此不起作用。它只适用于预定义的类。

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

我该如何解决这个问题并且能够抢到课?

编辑:我有这个代码

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

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

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

4

2 回答 2

0

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

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

.yourNormalClass{
    background : #fff
}

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

于 2012-07-20T09:18:28.623 回答
0

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

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

例如:-

$('input:text, textarea').click(function() {
        $(this).removeClass('your error class');
    });
于 2012-07-20T09:24:02.440 回答