【发布时间】:2019-11-20 14:49:43
【问题描述】:
我有许多必填字段需要验证,我想以这种格式显示警报消息:“请填写”+field label。我知道我可以像这样手动完成:
$("#myform").validate({
rules: {
Forename: "required",
Middlename: "required",
Lastname: "required"
},
messages: {
Forename: "Please fill in Forename",
Middlename: "Please fil in Middle name",
Lastname: "Please fill in Last name"
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.js"></script>
<form id="myform">
<div>
<label for="Forename">Forename </label>
<input type="text" id="Forename" name="Forename">
</div>
<div>
<label for="Middlename">Middle name </label>
<input type="text" id="Middlename" name="Middlename">
</div>
<div>
<label for="Lastname">Last name </label>
<input type="text" id="Lastname" name="Lastname">
</div>
<input type="submit" value="Search">
</form>
这对于没有太多字段是可以的,但对于很多字段来说重复太多。我试图像这样简化解决方案:
var labelName = $("label").text(),
requiredFields = ["Forename", "Middlename", "Lastname"],
messages = {},
prefix = "Please fill in ";
$.each(requiredFields, function (_, value) {
messages[value] = prefix + labelName;
});
$("#myform").validate({
rules: {
Forename: "required",
Middlename: "required",
Lastname: "required"
},
messages: messages
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.js"></script>
<form id="myform">
<div>
<label for="Forename">Forename </label>
<input type="text" id="Forename" name="Forename">
</div>
<div>
<label for="Middlename">Middle name </label>
<input type="text" id="Middlename" name="Middlename">
</div>
<div>
<label for="Lastname">Last name </label>
<input type="text" id="Lastname" name="Lastname">
</div>
<input type="submit" value="Search">
</form>
但是有一个问题:消息中的标签没有更新,它们是相同的,问题是:如何使其动态更改为每个字段的标签名称?
【问题讨论】:
-
澄清一下,您是想使用消息中标签中的
for值,还是从已经填充的requiredFields中提取,好吗? -
@Light 我想使用标签的实际文本,即 Forename 字段的 Forename,Middlename 字段的 Middle name,Lastname 字段的 Last name。数组
requiredFields只是对象messages的键。
标签: javascript jquery jquery-validate