Включить и отключить проверку поля с помощью bootstrapValidator

Поэтому я попытался проверить несколько решений в Интернете, но не смог найти решение, которое решило бы мою проблему, касающуюся включения и отключения проверки полей с помощью bootstrapvalidator.

У меня есть поле, которое должно выдавать ошибку, когда кто-то вводит отрицательное число (например, -4,-100,-545 и т. Д.), И любое число, которое не является числовым (например, 4.4.4, 4.r, 4t и т. Д.). Но я хочу поставить условие, которое не выдаст ошибку, когда пользователь введет -999.

Код работает хорошо, когда пользователь вводит другой номер, который не является отрицательным и числовым. И если пользователь вводит отрицательное или нечисловое число, отображается ошибка. Проблема, когда пользователь вводит -999, он проверяет истину (не отображать ошибку), но если пользовательский номер изменения (-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..
            }
        });
    });

1 ответ

Удалите прослушиватели событий и замените первые два правила регулярным выражением, которое допускает только положительные числа и ваше конкретное значение:

$('#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'
        }
      }
    },
  }
});
Другие вопросы по тегам