有时会出现不显眼的验证,有时不会。
只有当我明确调用form的valid()函数(在提交期间完成)时,不引人注意的验证才能可靠地工作
为什么会这样?
代码:
<script src="jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="jquery.validate.min.js" type="text/javascript"></script>
<script src="jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<form action="/User/Input" id="fxUser634377199694370000" method="post">
<fieldset>
<legend>Person</legend>
<div class="editor-label">
<label for="Firstname">Firstname</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The Firstname field is required." id="Firstname" name="Firstname" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Firstname" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="Lastneim">Lastneim</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The Lastneim field is required." id="Lastneim" name="Lastneim" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Lastneim" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="Age">Age</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field Age must be a number." data-val-required="The Age field is required." id="Age" name="Age" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Age" data-valmsg-replace="true"></span>
</div>
<p>
<input type="submit" id='fxUser634377199694370000_Saver' value="Save" />
</p>
</fieldset>
</form>
<script type="text/javascript">
$(function () {
$('#fxUser634377199694370000_Saver').click(function (e) {
e.preventDefault();
if ($('#fxUser634377199694370000').valid())
;
else {
alert('not ok');
return;
}
alert($('#fxUser634377199694370000').serialize());
});
});
</script>
功能代码,没有服务器代码,只有html和客户端(jquery库):http://www.sendspace.com/file/913i1w
答案 0 :(得分:5)
docs说:“在字段被标记为无效之前,验证是懒惰的:在第一次提交表单之前,用户可以通过字段标记而不会收到烦人的消息 - 他不会得到在他有机会真正输入正确的价值之前窃听他们“。
这会给你带来什么错误吗?
答案 1 :(得分:1)
通常我会对延迟验证感到满意,但在一个非常具体的应用程序中,情况并非如此。灵感来自@Peeter我正在调用验证:
$("#wep_key_register_test_second").focus(function() {
$("#wep_key_register_test_second").valid();
});
然后让插件正常运行。
答案 2 :(得分:0)
就像文档所说的那样,在第一次调用valid()之前,验证是懒惰的。