У меня была такая же проблема при использовании плагина jQuery Dialog (http://jqueryui.com/dialog/) с плагином jQuery Validator (http://jqueryvalidation.org/).). Проблема в том, что диалоговое окно jQuery-UI не добавляется в форму, а добавляется непосредственно перед, поэтому элементы для проверки находятся вне раздела .
Чтобы решить эту проблему, я добавляю атрибут «open» в инициализации Dialog. Внутри этого атрибута я добавляю функцию, котораяоборачивает мой элемент div Dialog внутри элемента формы и затем инициализирует валидатор.
Кроме того, я добавляю атрибут «close» при инициализации Dialog. Внутри этого атрибута я добавляю функцию, которая разворачивает форму, которую я обернул всобытие открытия и сбрасывает валидатор.
Простой пример,
<script type="text/javascript">
var validator;
$(document).ready(function () {
$("#dialog-id").dialog({
autoOpen: false,
resizable: true,
width: 450,
modal: true,
// Open event => wraps the Dialog source and validate the form.
open: function (type, data) {
$(this).wrap("<form id=\"form-id\" action=\"./\"></form>");
validator = $("#form-id").validate();
},
// Close event => unwraps the Dialog source and reset the form to be ready for the next open!
close: function (type, data) {
validator.resetForm();
$(this).unwrap();
},
buttons: {
"Cancel": function () {
$(this).dialog("close");
},
"Create": function () {
validator.form();
}
}
});
</script>
Некоторые HTML для вышеупомянутого JavaScript,
<div id="dialog-id" title="Thematic Section">
<div class="form_description">
Create a thematic section for a conference type.
</div>
<ul style="list-style-type:none;">
<li>
<label class="description" for="conferencetype_id">Conference Type:</label>
<div>
<select id="conferencetype_id" name="conferencetype_id" style="width:150px;">
<option value="1" selected="selected">Type-1</option>
<option value="2" selected="selected">Type-2</option>
</select>
</div>
</li>
<li>
<label class="description" for="title">Title:</label>
<div>
<input id="title" name="title" type="text" maxlength="100" value="" style="width:350px;" required/>
</div>
</li>
</ul>
</div>