3

Итак, я попытался проверить пару решений в Интернете, но не смог найти решение, которое решает мою проблему относительно включения и отключения проверки поля с помощью 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.. 
      } 
     }); 
    }); 

ответ

0

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

$('#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' 
     } 
     } 
    }, 
    } 
});