#jquery #umbraco #jquery-validate
#jquery #umbraco #jquery-проверка
Вопрос:
мы создаем новый веб-сайт umbraco, который содержит множество регистрационных форм, и мы используем плагин проверки Jquery для проверки этих форм.
Поскольку каждый пользовательский элемент управления (макрос) содержит теги сервера, мы должны использовать одну форму в каждом пользовательском элементе управления, чтобы заставить проверку jQuery работать.
Но поскольку мы используем одну форму в каждом пользовательском элементе управления, мы не можем добавить несколько элементов управления на страницу.
Что мы хотим сделать, это добавить тег формы с runat=»server» на главную страницу, а затем выполнить всю проверку с помощью некоторого container.validate(); вместо form.validate() .
т.е. что-то вроде этого
<script type="text/javascript>
$('#regForm').validate();
</script>
<div id="regForm">
<input type="text" class="required" name="Name" id="txtName" runat="server"/>
</div>
Комментарии:
1. @Sparky672: я хочу выполнить проверку в каком-либо container.validate() вместо form.validate();
2. Итак, вопрос в том, что? Вы можете это сделать? Ответ отрицательный … ему нужны поля, которые должны быть в пределах
<form>
. Смотрите мой ответ ниже.
Ответ №1:
Плагину проверки необходимо, чтобы различные поля, которые он будет проверять, содержались в наборе <form></form>
тегов.
http://rocketsquared.com/wiki/Plugins/Validation
Однако вы можете выполнить проверку без необходимости «отправлять» форму. Это все еще может быть достигнуто с onkeyup:
onfocusout:
помощью обработчиков or для примера.
Итак, если вы можете просто изменить свой <div id="regForm">
на что-то вроде <form id="regForm" ... >
, вы сможете выполнить проверку.
Редактировать:
Для HTML 4 единственным обязательным form
атрибутом является action
, поэтому нет причин, по которым вы не можете просто заменить свой <div id="regForm"> </div>
на this …
<form id="regForm" action="#"> </form>
Комментарии:
1. да, это я знаю .. но мы ищем метод для проверки в div.validate(), чтобы избежать нескольких форм на странице. спасибо за ваш ответ.
2. @махеш, я полностью понял ваш вопрос, но ответ остается тем же… Валидатору требуется
<form>
.3. @махеш, нет причин избегать нескольких
<forms>
на странице. Смотрите мое редактирование и ответ @Gary.S4. Но все используемые здесь формы имеют runat=»server», но мы не можем добавить несколько форм с runat=»server» на страницу. Также, если мы добавим форму с runat=»server» в masterpage, все остальные формы будут находиться внутри этой формы, и я думаю, что этот тип вложенности противоречит правилам html
5. @махеш, другого способа заставить валидатор работать без формы нет. Я предоставил единственно возможное решение.
Ответ №2:
Это поздний ответ, но, видя, что ни один из существующих ответов не был принят, вот мой взгляд на это. Я только что столкнулся с аналогичной ситуацией, когда мне нужно было проверить div, содержащийся в форме для модального диалога. Вот как я это решил.
<script type="text/javascript>
jQuery(function($) {
$('form').validate();
$('.continue').click(function() {
var isValid = true;
var $div = $(this).closest("div");
$div.find(":input").each( function() {
isValid = $(this).valid() amp;amp; isValid;
});
if ( isValid ) {
var $next = $div.hide().next('div');
if ( $next.length == 0 ) {
$(form).submit();
} else {
$next.show();
}
}
});
});
</script>
<form action="#">
<div id="div1">
<input type="text" required name="Name" id="txtName" runat="server"/>
<button class="continue">Continue</button>
</div>
<div id="div2">
<input type="text" required name="Address" id="txtAddress" runat="server"/>
<input type="text" required name="City" id="txtCity" runat="server"/>
<input type="text" required name="State" id="txtState" runat="server"/>
<input type="text" required name="Zip" id="txtZip" runat="server"/>
<button class="continue">Continue</button>
</div>
</form>
Ответ №3:
По умолчанию asp.net может иметь только одну форму с runat=»server». Однако у вас может быть несколько форм на странице, как показывает ответ Спарки. Больше информации о нескольких формах в asp.net можно найти здесь: http://msdn.microsoft.com/en-us/magazine/cc164151.aspx .
Комментарии:
1. Но все используемые здесь формы имеют runat=»server», но мы не можем добавить несколько форм с runat=»server» на страницу. Также, если мы добавим форму с runat=»server» в masterpage, все остальные формы будут находиться внутри этой формы, и я думаю, что этот тип вложенности противоречит правилам html
2. @махеш, прочтите ссылку, размещенную в этом ответе. В нем рассказывается, как разместить несколько форм на странице. Другого способа заставить валидатор работать нет.