【问题标题】:jQuery validation not working even with name attributes set properly即使名称属性设置正确,jQuery 验证也不起作用
【发布时间】:2020-04-28 19:19:15
【问题描述】:

需要一些帮助来确定我的代码有什么问题。文档和我所做的所有搜索都说明了同样的事情:必须为验证工作设置名称属性。问题是我的所有名称属性都已设置,但仍未验证。我在其他表格上做了同样的步骤,没有问题。所以我在这里不知所措。有什么想法吗?

这是小提琴 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');
    }
  });
});

【问题讨论】:

  • 您通过id 定位form 元素,但您的form 元素不包含id。使用$('[name="insert"]') 定位name

标签: html jquery jquery-validate


【解决方案1】:

您的代码通过$('#insert') 选择它。

应该是:

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

并且name属性应该添加到表单中的每个字段,否则该字段将不会提交。

【讨论】:

  • 谢谢。我不敢相信它是如此简单。我太专注于表单元素而忘记了表单标签本身。
  • 由于拼写错误,应该关闭问题。
【解决方案2】:

您必须有一种方法来选择元素,您不能尝试使用 id insert 选择它并且没有带有 id 插入的元素,因为它将返回 null 并且您无法验证 null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2015-01-03
    相关资源
    最近更新 更多