我正在尝试实施远程验证,但未能调用操作方法:
当我在Firebug中测试并且在页面上出现错误时应该验证其中一个字段。这很可能是远程验证无法工作的根本原因。
_LayoutView中的我的脚本
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script>
这是错误错误:
Syntax error, unrecognized expression: :input[name=UserReg.Password]
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js Line 2
我尝试过jQuery 1.8.0,错误仍然存在。
UserReg.Password是View
的一部分 @Html.EditorFor(model => model.UserReg.Password)
这是该字段的呈现页面源:
<input class="text-box single-line password" data-val="true" data-val-length="The Password must be at least 6 characters long." data-val-length-max="100" data-val-length-min="6" data-val-required="The Password field is required." id="UserReg_Password" name="UserReg.Password" type="password" value="" />
有什么想法吗?
答案 0 :(得分:1)
jQuery Validate插件要求在验证规则中声明时,将包含任何特殊字符“输入点”的输入名称括在引号中。
请参阅:docs.jquery.com/Plugins/Validation/…
名称复杂的字段(括号,点)
“如果您的表单包含使用不合法名称的字段 JavaScript标识符,您必须在使用时引用这些名称 规则选项:“
$(document).ready(function(){
$('#myform').validate({
rules: {
"UserReg.Password": {
// whatever your rules,
// required: true
}
}
});
});
如果您不能这样做,请尝试将此input
切换为没有任何特殊字符的名称。
旁注:您正在使用jQuery Validate v1.9.0。但是,即使最新版本的插件v1.10.0也未经过测试,无法使用jQuery 1.9.0。如果你想保留jQuery 1.9.0,你必须使用Github的“预发布”Validate plugin version 1.11.0pre。
答案 1 :(得分:0)
我从_LayoutView
中删除了此脚本<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
问题消失了。客户端验证仍然有效。