【发布时间】:2019-11-07 11:59:18
【问题描述】:
我正在尝试验证一个字段,我的主要目标是:
- 当用户登陆页面时,没有验证
- 验证从用户单击“名称查询”字段开始,并在上键和聚焦时进行验证
- 表单提交时也会验证字段:如果字段无效,单击提交按钮只会显示验证消息;仅当字段有效时才会提交表单。
这是我想出的一个sn-p:
var myForm = $("#myform"),
nameQuery = $("#NameQuery");
myForm.validate({
rules: {
NameQuery: "required"
},
messages: {
NameQuery: "Please fill in name query"
}
});
nameQuery.on("focusout keyup submit", function() {
var isValid = myForm.valid();
if (!isValid) {
nameQuery.addClass("alert-text");
}
else {
nameQuery.removeClass("alert-text");
};
});
nameQuery.on("submit", function() {
var isValid = myForm.valid();
if (isValid) {
$("p").html("Form sumitted");
}
else {
$("p").empty();
};
});
.alert-text {
border: 1px dashed red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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">
<label for="NameQuery">Name Query: </label>
<input type="text" id="NameQuery" name="NameQuery">
<input type="submit" value="Search">
<p></p>
</form>
几个问题:
- 我用了两次
var isValid = myForm.valid();,好像有点重复但是我想不出更简洁的方法? - 如果字段有效,点击提交按钮会导致一切消失?
- 我的 sn-p 有什么改善吗?
编辑:通过说代码重复并且更简洁,我的意思是这两个部分可以合并为一个部分:
nameQuery.on("focusout keyup submit", function() {
var isValid = myForm.valid();
if (!isValid) {
nameQuery.addClass("alert-text");
}
else {
nameQuery.removeClass("alert-text");
};
});
和
nameQuery.on("submit", function() {
var isValid = myForm.valid();
if (isValid) {
$("p").html("Form sumitted");
}
else {
$("p").empty();
};
});
它们作用于同一个元素,内部逻辑看起来很相似。
【问题讨论】:
标签: javascript jquery html css jquery-validate