javascript - 使用 bootstrapValidator 启用和禁用字段验证

标签 javascript jquery twitter-bootstrap bootstrapvalidator jqbootstrapvalidation

因此,我尝试在线检查几个解决方案,但找不到解决方案来解决有关使用 bootstrapvalidator 启用和禁用字段验证的问题。

当有人输入负数(例如-4、-100、-545等)和任何非数字的数字(例如4.4.4、4.r、4t)时,我有一个字段应该给出错误ETC)。但我想设置一个条件,当用户输入 -999 时不会给出错误。

当用户输入非负数和非数字的其他数字时,代码运行良好。如果用户输入负数或非数字,则会显示错误。当用户输入 -999 时出现问题,它验证为 true(不显示错误),但是如果用户将数字(-999)更改为其他数字,例如负数和非数字数字,我的字段验证将停止工作(意味着不显示任何错误,尽管它应该显示)。

那么我如何启用和禁用字段验证或设置字段验证条件来使用 bootstrapValidator 解决我的问题..???

希望你们已经遇到过这样的问题,希望你们能帮我解决这个难题。

您可以在这里尝试:https://jsfiddle.net/os3b0dqx/看看它是如何工作的

我的 template.html 看起来像:

<form class="well form-horizontal" action=" " method="post" id="myform">
    <div class="form-group">
        <label class="col-xs-3 control-label">Length</label>
        <div class="col-xs-5">
            <input type="text" class="form-control" id="length" name="length" />
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-5 col-xs-offset-1">
            <button type="submit" class="btn btn-default">Submit</button>
        </div>
    </div>
</form>
<script>
    $(document).ready(function() {
        $('#myform').bootstrapValidator({
            feedbackIcons: {
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                length: {
                    validators: {
                        greaterThan: {
                            value: 0,
                            message: 'The value must be greater than or equal to zero'
                        },
                        numeric: {
                            message: 'The value is not a number',
                            thousandsSeparator: '',
                            decimalSeparator: '.'
                        },
                        notEmpty: {
                            message: 'Please fill the length'
                        }
                    }
                },
            }
        }).on('click keyup input change', '[name="length"]', function() {
            if ($(this).val() == -999) {
                $('#myform').bootstrapValidator('enableFieldValidators', 'length', false);
            } else {
                $('#myform').bootstrapValidator('validateField', 'length');
                //$('#myform').bootstrapValidator('enableFieldValidators','length',true);
                // both "validateField" and "enableFieldValidators" doesn't work for me..
            }
        });
    });

最佳答案

删除事件监听器并将前两条规则替换为仅允许正数和特定值的正则表达式:

$('#myform').bootstrapValidator({
  fields: {
    length: {
      validators: {
        regexp: {
          regexp: '^[+]?[0-9]+([.,][0-9]+){0,1}$|^-999$',
          message: 'The value must be a number greater than or equal to zero'
        },
        notEmpty: {
          message: 'Please fill the length'
        }
      }
    },
  }
});

关于javascript - 使用 bootstrapValidator 启用和禁用字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933963/

相关文章:

javascript - 使用新内容更新加载时的 div(刷新)

javascript - 将 Javascript 数组返回到隐藏的输入值

javascript - 通过 javascript/jquery 将类/id 添加到包含特定文本的 div

html - 使模态内的 Bootstrap 表可滚动

javascript - 当包含的 div 改变大小时如何调整 Flot 图的大小

javascript - Fullpage.js - 点导航样式

javascript - jQuery Uncaught SyntaxError : Unexpected Identifier but my code looks good!(我认为)

javascript - 为什么 $ ('#id' ).click 功能不起作用

javascript - 超出 Magnific Popup 和 Bootstrap 3 模态调用堆栈

javascript - 如何仅将部分输入值传递给变量和url?