jQuery проверка не работает, даже если атрибуты имени установлены правильно - PullRequest
0 голосов
/ 28 апреля 2020

Нужна помощь, чтобы понять, что не так с моим кодом. В документации и во всем поиске я указывал одно и то же: для работы проверки ДОЛЖЕН быть установлен атрибут name. Проблема в том, что все мои атрибуты имени установлены, но они все еще не проверяются. И я сделал те же шаги на других формах, и это не сработало. Так что я в растерянности здесь. Есть идеи?

Вот скрипка https://jsfiddle.net/dpq94a3f/

Вот HTML

<form name="insert" method="post">
  <div class="form-group">
    <label for="fid">ID</label>
    <input type="text" class="form-control" name="fid" id="fid">
  </div>
  <div class="form-group">
    <label for="fx">X axis</label>
    <input type="text" class="form-control" name="fx" id="fx">
  </div>
  <div class="form-group">
   <label for="fy">Y axis</label>
   <input type="text" class="form-control" name="fy" id="fy">
  </div>
  <div class="form-group">
    <label for="finfo">Info</label>
    <input type="text" class="form-control" name="finfo" id="finfo">
  </div>
  <button type="submit" class="btn btn-primary" name="send_data" id="send_data" >Send Data</button>
    <button type="reset" class="btn btn-danger float-right" name="reset_data" id="reset_data" >Reset Data</button>
  </form>

А вот jQuery правила проверки

$(document).ready(function () {

    $('#insert').validate({
    rules: {
            fid: {
        required: true,
        maxlength: 8,
                pattern: /^[A-Za-z][A-Za-z0-9]*$/
      },
            fx: {
        required: true,
        maxlength: 5,
                number: true
      },
            fy: {
        required: true,
        maxlength: 5,
                number: true
      },
      finfo: {
        required: true,
        maxlength: 255
      }
    },
    messages: {
            fid: {
                required: "Required field",
        maxlength: "Too many characters",
        pattern: "Wrong pattern"
      },
      fx: {
                required: "Required field",
        number: "Number only"
      },
            fy: {
                required: "Required field",
        number: "Number only"
      },
            finfo: {
                required: "Required field",
        maxlength: "Too many characters"
      }
    },
    errorElement: 'span',
    errorPlacement: function (error, element) {
      error.addClass('invalid-feedback');
      element.closest('.form-group').append(error);
    },
    highlight: function (element, errorClass, validClass) {
      $(element).addClass('is-invalid');
    },
    unhighlight: function (element, errorClass, validClass) {
      $(element).removeClass('is-invalid');
    }
  });
});

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Ваш код выделите его по $('#insert').

Оно должно быть:

<form id="insert" method="post">

И атрибут name должен добавляться к каждому полю в форме, иначе это поле не будет отправлено .

0 голосов
/ 28 апреля 2020

У вас должен быть способ выбрать элемент, который вы не можете выбрать с помощью вставки идентификатора, и не иметь элементов с вставкой идентификатора, потому что он вернет значение NULL, а вы не можете проверить значение NULL

...