首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证在focusout上不起作用?

jQuery验证在focusout上不起作用?
EN

Stack Overflow用户
提问于 2019-11-06 18:28:01
回答 2查看 48关注 0票数 1

我有以下代码来验证焦点输出时的输入。我想要的是,每当用户单击输入字段并单击其他地方以突出显示时,该字段将验证自身不为空,并且消息应该显示出来。然而,下面的代码在被聚焦时不会做任何事情。

代码语言:javascript
复制
$("#NameQuery").on("focusout", function () {

  $("#myform").validate({
    rules: {
      NameQuery: "required"
    },
    messages: {
      NameQuery: "Please fill in name query"
    },
    errorElement : 'div',
    errorLabelContainer: '.error__input'
  });

});
代码语言:javascript
复制
.error__input{
  border: 1px solid red;
  min-height: 20px;
  width: 170px;
}
代码语言: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="">
  <input type="text" id="NameQuery" name="NameQuery">
  <div class="error__input"></div>
  <input type="submit" value="Search">
</form>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-06 18:29:32

这个问题是因为您需要在页面加载时初始化validate()。要在发生focusout事件时调用验证规则,请调用相关form上的valid()方法,如下所示:

代码语言:javascript
复制
$("#myform").validate({
  rules: {
    NameQuery: "required"
  },
  messages: {
    NameQuery: "Please fill in name query"
  },
  errorElement: 'div',
  errorLabelContainer: '.error__input'
});

$("#NameQuery").on("focusout", function() {
  $('#myform').valid();
});
代码语言:javascript
复制
.error__input {
  border: 1px solid red;
  min-height: 20px;
  width: 170px;
}
代码语言: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="">
  <input type="text" id="NameQuery" name="NameQuery">
  <div class="error__input"></div>
  <input type="submit" value="Search">
</form>

票数 1
EN

Stack Overflow用户

发布于 2019-11-06 18:41:03

使用onfocusout选项

代码语言:javascript
复制
$("#myform").validate({
  rules: {
    NameQuery: "required"
  },
  messages: {
    NameQuery: "Please fill in name query"
  },
  onfocusout: function(element) {
    $(element).valid()
  },
  errorElement: 'div',
  errorLabelContainer: '.error__input'
});
代码语言:javascript
复制
.error__input {
  border: 1px solid red;
  min-height: 20px;
  width: 170px;
}
代码语言: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="">
  <input type="text" id="NameQuery" name="NameQuery">
  <div class="error__input"></div>
  <input type="submit" value="Search">
</form>

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

https://stackoverflow.com/questions/58728000

复制
相关文章

相似问题

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