禁用bootstrap验证器提交按钮,直到整个表单有效

时间:2014-11-10 15:26:43

标签: javascript jquery twitter-bootstrap validation jqbootstrapvalidation

我已经搜索了StackOverflow来解决这个问题,但是找不到一个可行的方法。

我正在使用Bootstrap Validator验证表单,它运行良好。我想禁用submit按钮,直到整个表单有效并且Bootstrap Validator具有isValid()功能。使用这个功能,我能做的最好就是使用keyup,这很难看。

每当表单评估其有效性时,都会有一个延迟时间,并且提交按钮会从有效闪烁到非常快速无效。

有没有办法通过setTimeout.delay()修复此闪烁,并且仍然具有与现在相同的表单功能?

或者,是否有纯粹的Bootstrap Validator解决方案? (这将是理想的)我查看了文档,但找不到任何有用的东西。只有方法可以设置表单的验证时间,这对我的原因没有帮助。

这是展示问题的JSFiddle

1 个答案:

答案 0 :(得分:4)

我更仔细地查看了您的代码,最后更改了一些关键区域以达到您想要的效果。

  1. 我将触发器从keyup更改为status.field.bv,每当字段状态发生变化时,引导验证程序(BV)都会抛出此触发器。
  2. 我没有使用isValid() jquery函数(没有考虑BV设置),而是检查BV适用于每个has-success的{​​{1}}类的存在。
  3. 我从表单组中删除了成功按钮。
  4. 代码如下:

    HTML:

    form-group

    使用Javascript:

    <form id="test">
        <div class="form-group">
            <input class="form-control input-lg" name="email" type="text" size="35" placeholder="Email*"></input>
        </div>
        <div class="form-group">
            <input class="form-control input-lg" name="password" type="password" size="35" placeholder="Confirm Password*"></input>
        </div>
        <input class="btn btn-lg btn-success submit-button" style="width: 100%;" value="Sign Up!" type="submit" disabled></input>
    </form>
    

    JSFiddle:http://jsfiddle.net/ejyef7vc/3/