我正在使用流行的jQuery验证插件:Validation
众所周知,这个插件效果很好,经过深思熟虑。但是,我正在使用一个asp.net应用程序,它自动为我的所有输入字段生成名称属性。此外,它生成的名称似乎无效,无法在jquery插件中使用。
我想知道是否有另一种使用此插件定位输入元素的方法,或者如果name属性是唯一的方法。
<script>
jQuery.validator.messages.required = "";
$(document).ready(function () {
$('#form1').validate({
debug: true;
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field. It has been highlighted below'
: 'You missed ' + errors + ' fields. They have been highlighted below';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
},
rules: {
<%=firstName.UniqueID%>: {
required: true,
minlength: 6,
},
email: {
required: true,
email: true,
},
password: {
required: true,
minlength: 6,
},
verify:{
required: true,
equalTo: "#password",
}
}
});
});
</script>
我尝试用属性的服务器端调用替换名称(显示在“firstName”中),该调用正确地回调了该名称。但是jquery在那时并不起作用,所以我猜测生成的名称是无效的,因为它中有“$”。
渲染:
<script>
jQuery.validator.messages.required = "";
$(document).ready(function () {
$('#form1').validate({
debug: true;
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field. It has been highlighted below'
: 'You missed ' + errors + ' fields. They have been highlighted below';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
},
rules: {
ctl00$ContentPlaceHolderBody$firstName: {
required: true,
minlength: 6,
},
email: {
required: true,
email: true,
},
password: {
required: true,
minlength: 6,
},
verify:{
required: true,
equalTo: "#password",
}
}
});
});
</script>
HTML:
<label>Name</label>
<input name="ctl00$ContentPlaceHolderBody$firstName" type="text" id="firstName" /><br />
<label>Email</label>
<input name="ctl00$ContentPlaceHolderBody$ctl00" type="text" /><br />
<label>Password</label>
<input name="ctl00$ContentPlaceHolderBody$password" type="text" id="password" /><br />
<label>Verify Password</label>
<input name="ctl00$ContentPlaceHolderBody$verify" type="text" id="verify" /><br />
<input type="submit" name="ctl00$ContentPlaceHolderBody$submit" value="Submit" id="submit" />
答案 0 :(得分:1)
文档说在设置规则选项时,任何带有非法JavaScript标识符的名称都需要用引号括起来。这是链接:http://docs.jquery.com/Plugins/Validation/Reference#Fields_with_complex_names_.28brackets.2C_dots.29
我不确定,如果它可以使用$符号,但是如果你还没有它可能值得一试。