Я использую популярный плагин проверки jQuery: Проверка
Как многие знают, этот плагин прекрасно работает и хорошо продуман. Однако я использую приложение 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" />