Идентификатор текстового поля динамического ввода не соответствует формату регулярных выражений.показывает неопределенное - PullRequest
1 голос
/ 20 сентября 2019

У меня есть динамические поля ввода, имеющие следующие идентификаторы: points0, points1, points2 и т. Д. Я хочу убедиться, что эти поля ввода должны соответствовать только числам.Поэтому я использовал следующий код, но в консоли он всегда показывает

TypeError: $ (...). Val (...) не определен

Поэтому я использовалследующий код.Я зацикливаюсь на вводимых текстовых полях.

var result = document.getElementsByTagName("input");
for (var j = 0; j < result.length; j++) {
var points = 'Enter a valid point.';
var regex = '/^[A-Za-z!@#></!?\$%\^\&*\)\(+=._-]+$/g';
 if ($("#points" + j).val().match(regex)) {
                    $('#points' + j + ' + span').html('');
                    $('#points' + j).after('<span class="' + errTextboxClass + '" style="color:#e03b3b;">' + points + '</span>');
                    $('#points' + j).focus();
                }
  }

   
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

В своем клинке Ларавела я зацикливаюсь на некоторых ответах

 @if($ans)
 @for($j=0;$j<count($ans) ;$j++)
 <input class="form-control " name="points[]" id="points{{$j}}" placeholder="POINTS"  value="<?php echo $ans[$j]['points'];?>">
@endfor
@endif

1 Ответ

0 голосов
/ 20 сентября 2019

Возможно, вы захотите использовать лучший селектор для элементов input.Вы можете использовать input[id^='points'] например.Это будет искать input элементы с id, который начинается с points.

. Рассмотрим следующий пример:

var results = $("input[id^='points']");
var points = 'Enter a valid point.';
var regex = '/^[A-Za-z!@#></!?\$%\^\&*\)\(+=._-]+$/g';
results.each(function(i, el) {
  if ($(el).val().match(regex)) {
    console.log("Match on #" + $(el).attr("id"));
    $(el).next('span').html('');
    $("<span>", {
      class: "errTextboxClass"
    }).css("color", "#e03b3b;").html(points).insertAfter($(el));
    $(el).focus();
  }
});

Используя .each(), мы можем итерировать каждый изсоответствующие элементы и проверить их на соответствие шаблону RegEx.Вы могли бы также рассмотреть другую модель.Похоже, вы хотите разрешить только цифры, можете попробовать:

^[\D]+$

Это будет соответствовать любой нецифровой.Если бы это был я, я бы запретил Пользователю вводить нецифровые символы в самом поле, используя .keypress().Например:

$(function() {
  $("input[id^='points']").keypress(function(e) {
    console.log(e.which);
    if (e.which !== 46 && (e.which < 48 || e.which > 57)) {
      e.preventDefault();
    }
  });
});
label {
  width: 80px;
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <label>Points 1</label> <input id="points1" type="text">
</div>
<div>
  <label>Points 2</label> <input id="points2" type="text">
</div>
<div>
  <label>Name</label> <input id="name1" type="text">
</div>

См. Подробнее:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...