Javascript 禁用引导验证程序提交按钮,直到整个表单有效

Javascript 禁用引导验证程序提交按钮,直到整个表单有效,javascript,jquery,twitter-bootstrap,validation,jqbootstrapvalidation,Javascript,Jquery,Twitter Bootstrap,Validation,Jqbootstrapvalidation,我已经搜索了StackOverflow来解决这个问题,但还没有找到一个有效的解决方案 我正在使用引导验证程序验证表单,它运行良好。我想禁用submit按钮,直到整个表单有效并且引导验证程序具有isValid()功能。使用这个函数,我能做的最好的事情就是使用keyup,这很难看 每当表单评估其有效性时,都会有一个延迟时间,“提交”按钮会很快从“有效”闪烁到“无效” 有没有办法用setTimeout或.delay()修复此闪烁,并且仍然像现在一样具有表单功能 或者,是否有一个用于此的纯引导验证程序解

我已经搜索了StackOverflow来解决这个问题,但还没有找到一个有效的解决方案

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

每当表单评估其有效性时,都会有一个延迟时间,“提交”按钮会很快从“有效”闪烁到“无效”

有没有办法用
setTimeout
.delay()
修复此闪烁,并且仍然像现在一样具有表单功能

或者,是否有一个用于此的纯引导验证程序解决方案?(这将是理想的)我已经查看了文档,但没有找到任何有用的东西。只有一些方法可以设置表单验证的时间,这对我的原因没有帮助


下面是一个演示问题的示例。

我更仔细地查看了您的代码,最后更改了一些关键区域以获得所需的效果

  • 我将触发器从
    keyup
    更改为
    status.field.bv
    ,每次字段状态更改时,引导验证程序(bv)都会抛出该触发器
  • 我没有使用
    isValid()
    jquery函数(它不考虑BV设置),而是检查BV应用于每个
    表单组的
    has success
    类是否存在
  • 我从表单组中删除了“成功”按钮
  • 代码如下:

    HTML:


    jsIDLE:

    当输入电子邮件且密码字段为空时,表单有效。已更新解决方案。另外,您是否可以为将来发现此问题的任何人将原始代码添加到问题中?
    <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>
    
    $( '#test' ).on( 'status.field.bv', function( e, data ) {
        let $this = $( this );
        let formIsValid = true;
    
        $( '.form-group', $this ).each( function() {
            formIsValid = formIsValid && $( this ).hasClass( 'has-success' );
        });
    
        $( '.submit-button', $this ).attr( 'disabled', !formIsValid );
    });