我想在填写表单字段期间启动验证元素
如果我创建一个包含简单模型的简单MVC应用程序:
public class SimpleModel
{
[RegularExpression("[A-Z][a-z]+")]
[Required]
public string FirstName { get; set; }
[RegularExpression("[A-Z][a-z]+")]
[Required]
public string LastName { get; set; }
}
对于这个模型,我为这个模型创建了相应的Controller和View(使用模板Edit的Razor)
在这个时候,一切都按预期工作。但只有在单击“保存”按钮(提交表单)时,才会填写字段。这就是为什么我想在脚本部分中对验证器的keyup实施操作:
@section Scripts
{
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$('form').validate(
{
onkeyup: function (element)
{
$.validator.unobtrusive.parseElement(element, true);
}
});
</script>
}
但它不起作用,原始验证也不起作用(现在如果我单击保存,表单将被提交为有效的altrough字段未填充或填写错误)。
如果我只使用原始验证不起作用
$('form').validate();
要么
$('form').valid();
命令。
也许有趣的是
$('form').valid();
返回true虽然表单未填充,因此无效。
答案 0 :(得分:2)
解决方案非常简单。只是意识到,在不显眼的初始化之后,可以使用脚本进行验证。这个初始化是通过注册新的jquery ready函数来执行的 - 在底部的jquery.validate.unobtrusive.js中找到这段代码:
$(function () {
$jQval.unobtrusive.parse(document);
});
因此,如果必须进行额外的初始化,那么他们必须创建自己的就绪函数并插入必要的代码。
出于上述问题中提到的目的,您可以使用以下代码:
@section Scripts
{
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function ()
{
var validator = $('form').validate();
validator.form();
});
</script>
}