#jquery #asp.net #master-pages
#jquery #asp.net #мастер-страницы
Вопрос:
Я искал в Интернете, чтобы попытаться узнать, чего мне не хватает, но, похоже, я просто не могу этого понять. Я использую asp.net 4.0 (очевидно, веб-формы), главные страницы и проверка jQuery. Может кто-нибудь сказать мне, что я путаю?
В моем случае я ничего не буду знать о полях, требующих проверки, поэтому я хотел бы использовать метод по умолчанию, просто имея поля с class =»required email» и т.д.
Поля и кнопка отправки являются обычным html, не ASP.NET элементы управления (длинная история). При отображении страницы отображается форма «form1», а не aspnetForm, как я видел, ссылаются другие люди. При нажатии кнопки отправки не отображается ни один из javascript. Он просто отправляет ответ. Это даже не всплывает окно предупреждения.
На что я неправильно ссылаюсь?
Вот мой простой javascript:
$(document).ready(function () {
alert('in js');
document.getElementById('form1').validate({
alert('in val');
});
Содержимое страницы:
<fieldset>
<legend>A simple comment form with submit validation and default messages</legend>
<p>
<label for="cname">Name</label>
<em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
</p>
<p>
<label for="cemail">E-Mail</label>
<em>*</em><input id="cemail" name="email" size="25" class="required email" />
</p>
<p>
<label for="curl">URL</label>
<em> </em><input id="curl" name="url" size="25" class="url" value="" />
</p>
<p>
<label for="ccomment">Your comment</label>
<em>*</em><textarea id="ccomment" name="comment" cols="22" class="required"></textarea>
</p>
<p>
<input name="btnsubmit" id="btnsubmit" class="submit" type="submit" value="Submit"/>
</p>
</fieldset>
Ответ №1:
Вы должны правильно закрыть свои функции и фигурные скобки. Более серьезная проблема заключается в том, что вы должны ссылаться не на собственный объект DOM, а на объект jQuery. Ваш код должен быть:
$(document).ready(function(){
alert('in js');
$('#form1').validate({
alert('in val');
});
});
Ваша готовая функция также может быть сокращена до $(function(){...});
для простоты.
Ответ №2:
Asp.net на странице будет размещена только одна форма, поэтому используйте $ («form»), чтобы найти ее, не зная id. Кроме того, параметры проверки не будут принимать предупреждение в том виде, в каком оно у вас есть, но вы можете переместить его в правильные обработчики, как я сделал ниже. Надеюсь, это поможет…
$(function () {
$("form").validate({
submitHandler: function () {
alert("submiting...");
return false;
},
invalidHandler: function () {
alert("invalid form");
return false;
}
});
});
Ответ №3:
Вы должны передать объект jquery для плагина validate. Вы пытаетесь передать объект DOM для проверки плагина, что, очевидно, не сработает.
Поэтому замените document.getElementById('form1')
на $('#form1')
.
Теперь валидация будет происходить плавно.
Ответ №4:
Вы используете необработанный JS для ссылки на форму, а подключаемому модулю .validate необходим объект jQuery. Попробуйте это вместо:
$(document).ready(function () {
alert('in js');
$('form').validate({
alert('in val');
});