【问题标题】:Search page for class .has-error类 .has-error 的搜索页面
【发布时间】:2014-08-10 13:25:50
【问题描述】:

所以我在 Javascript 中构建了一些验证,当字段出现错误时,div <div class="form-group">...</div> 变为 <div class="form-group has-error">...</div>

然后我有一个.btn-bar div,其中包含用于提交表单的按钮。当页面加载时,我默认隐藏这个:

$(document).ready(function(){
    $('.registration-information').hide();
    $('.btn-bar').hide();
});

我有一个显示.btn-bar的功能:

function enableButtons(){
  if(noErrors){
    $('.btn-bar').slideDown();
  }
}

现在显然,上面的脚本不起作用。更具体地说,if 声明。我的问题是,如何在页面上的类名中搜索具有 has-error 的 div?如果有则 btn-bar 不显示,如果没有则 btn-bar 显示。

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:

在 jQuery 中它实际上相当简单。试试这样的:

function noErrors() {
    return $('.has-error').length == 0;
}

function enableButtons(){
    if(noErrors()){
        $('.btn-bar').slideDown();
    }
}

我将 noErrors() 分离到它自己的函数中,以防您最终想要添加的其他验证测试不仅仅与 .has-error 类相关。

祝你好运!

【讨论】:

  • 我会尽快接受这个答案。其他人可能会工作,但他们不是我在这个项目中寻找的。不过我会记住它们的!
  • 如何隐藏它,直到页面上的每个输入都有一个值,因为它们都是必需的。
  • 在这种情况下,您需要在每个项目更改时清除 .has-error 类(查看“更改”事件),并每次测试 enableButtons()。可能有更有效的方法可以做到这一点,具体取决于表单的大小,但这是我希望开始的地方。
  • 上述代码的主要问题是您在整个站点上全局搜索是否存在 has-error 类。如果您在同一个站点上有两个独立的表单组,您的代码将不起作用。您绝对应该考虑模块化。签出:code.tutsplus.com/tutorials/…
  • 我同意它的范围应该更好,但是通过提供的代码示例,我只有一个通用的指导代码。您确实提出了一个非常有效的观点,OP 应该牢记这一点!
【解决方案2】:

你可以这样做:

$(document).ready(function(){
    $('.registration-information').hide();
    $('.btn-bar').hide();

    if (!$('.has-error')) {
        $('.btn-bar').slideDown();
    }
});

它将检查是否有任何元素具有 .has-error 类,如果在页面上的任何位置不存在 !,它将显示 .btn-bar

【讨论】:

  • 我从 OP 的原始代码中收集到,他们不希望在调用 enableButtons() 函数之前进行检查...
猜你喜欢
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多