首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jQuery中指定已验证的字段

如何在jQuery中指定已验证的字段
EN

Stack Overflow用户
提问于 2019-10-25 10:50:53
回答 3查看 83关注 0票数 1

我有两个字段:名称查询和出生日期,而名称查询是强制性的,而DoB则不是。下面的表单显示了名称查询字段下的验证消息:

代码语言:javascript
复制
var myForm = $("#myform").validate({
  rules: {
    NameQuery: "required",
    DoBQuery: {
      required: false
    }
  },
  messages: {
    NameQuery: "Please fill in name query field",
    DoBQuery: ""
  }
});
代码语言:javascript
复制
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>


<form id="myform" method="post" action="">
  <div>
    <label for="NameQuery">Name</label>
    <input type="text" id="NameQuery" name="NameQuery">
  </div>
  <div>
    <label for="DoBQuery">Date of Birth</label>
    <input type="text" id="DoBQuery" name="DoBQuery">
  </div>
  <input type="submit" value="Search">
</form>

现在,我想在Name Query字段验证消息中添加一些样式。一些代码被添加到代码片段中,请注意,<div class="error__input"></div>必须在两个字段中都存在,就像在代码片段中一样。

代码语言:javascript
复制
var myForm = $("#myform").validate({
  rules: {
    NameQuery: "required",
    DoBQuery: {
      required: false
    }
  },
  messages: {
    NameQuery: "Please fill in name query field",
    DoBQuery: ""
  },
  errorElement : 'div',
  errorLabelContainer: '.error__input'
});
代码语言:javascript
复制
.error__input{
  min-height: 20px;
}
代码语言:javascript
复制
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>
<form id="myform" method="post" action="">
  <div>
    <label for="NameQuery">Name</label>
    <input type="text" id="NameQuery" name="NameQuery">
    <div class="error__input"></div>
  </div>
  <div>
    <label for="DoBQuery">Date of Birth</label>
    <input type="text" id="DoBQuery" name="DoBQuery">
    <div class="error__input"></div>
  </div>
  <input type="submit" value="Search">
</form>

现在在这两个字段中都存在验证消息,我理解jQuery找到了error__input div并将类应用于它,但是为什么它要将消息添加到第二个字段,以及如何将警报消息设置为只应用于第一个消息,而两个<div class="error__input"></div>都必须存在?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-25 11:04:58

你想要这样的东西,我想:

代码语言:javascript
复制
var myForm = $("#myform").validate({
  rules: {
    NameQuery: "required",
    DoBQuery: {
      required: false
    }
  },
  messages: {
    NameQuery: "Please fill in name query field",
    DoBQuery: ""
  }
});
代码语言:javascript
复制
#myform .error {
    display: block;
    color: red;
}

#myform input {
  display: inline;
}

#myform > div {
  height: 50px;
}
代码语言:javascript
复制
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>


<form id="myform" method="post" action="">
  <div>
    <label for="NameQuery">Name</label>
    <input type="text" id="NameQuery" name="NameQuery" style="display: inline-block;">
  </div>
  <div>
    <label for="DoBQuery">Date of Birth</label>
    <input type="text" id="DoBQuery" name="DoBQuery" style="display: inline-block;">
  </div>
  <input type="submit" value="Search">
</form>

票数 1
EN

Stack Overflow用户

发布于 2019-10-25 12:35:43

您可以使用errorPlacement将错误消息放在error元素旁边。

代码语言:javascript
复制
errorPlacement: function(error,element){
   error.appendTo(element.next(".error__input"));
}

代码语言:javascript
复制
var myForm = $("#myform").validate({
  rules: {
    NameQuery: "required",
    DoBQuery: {
      required: false /* if it is not required, why you put here? You can simply not insert this input field in validate()'s rules. */
    }
  },
  messages: {
    NameQuery: "Please fill in name query field"
  },
  errorElement : 'div',
  errorPlacement: function(error,element){
    error.appendTo(element.next(".error__input"));
  }
});
代码语言:javascript
复制
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>
<form id="myform" method="post" action="">
  <div>
    <label for="NameQuery">Name</label>
    <input type="text" id="NameQuery" name="NameQuery">
    <div class="error__input"></div>
  </div>
  <div>
    <label for="DoBQuery">Date of Birth</label>
    <input type="text" id="DoBQuery" name="DoBQuery">
    <div class="error__input"></div>
  </div>
  <input type="submit" value="Search">
</form>

票数 1
EN

Stack Overflow用户

发布于 2019-10-25 11:08:36

您应该删除出生日期后的<div class="error__input"></div>标记字段。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58557124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档