Использовать jQuery Validation Engine с вкладками?
У меня есть страница веб-форм ASP.NET, которая использует вкладки пользовательского интерфейса jQuery. В каждой вкладке есть наборы входных данных, в том числе кнопка, которая представляет входные данные на вкладке (с помощью вызова AJAX, но это не относится к этому обсуждению).
Я хочу подключить механизм проверки jquery ( https://github.com/posabsolute/jQuery-Validation-Engine) только к подмножеству входных данных, которые составляют содержимое вкладки, однако из-за способа работы веб-форм ASP.NET, существует только один элемент формы, и механизм проверки должен присоединиться к форме.
Есть ли простой способ сказать этому механизму валидации включить видимые в настоящее время вкладки / элементы в вызов валидации?
2 ответа
Изменить на ответ:
То, что вы ищете, еще проще! Если вы просто хотите проверить поля на вкладке, на которой в данный момент находится пользователь, не ограничивая их переходом на другие вкладки, то игнорируйте вкладки beforeActivate часть предоставленного мною кода и инициализируйте ваш jQuery Validation Engine, чтобы игнорировать проверку невидимых полей, которые это то, что они будут для всех неактивных вкладок. Ваш код будет выглядеть так:
jQuery("#myForm").validationEngine('attach', {
promptPosition: "bottomLeft",
validationEventTrigger: "submit",
validateNonVisibleFields: false // this does the trick!
});
Вот новый JSFiddle, чтобы проиллюстрировать пример: http://jsfiddle.net/T7daH/
Ура!:-)
-------------------------------------------------- ----- Оригинальный ответ ------------------------------------------- ----------
На самом деле существует довольно простой способ реализации механизма проверки jQuery с формой, которая охватывает несколько вкладок без необходимости программно запускать проверку для каждого поля или щелчка вкладки.
Если у вас есть следующая форма, которая охватывает несколько вкладок...
<form id="myForm" action="">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Tab 1</a>
</li>
<li><a href="#tabs-2">Tab 2</a>
</li>
<li><a href="#tabs-3">Tab 3</a>
</li>
</ul>
<div id="tabs-1">
<input type="text" id="requiredFiled" name="requiredField" class="validate[required]" />
</div>
<div id="tabs-2"></div>
<div id="tabs-3"></div>
</div>
Затем вы настраиваете форму и вкладки следующим образом:
jQuery("#myForm").validationEngine('attach', {
promptPosition: "bottomLeft",
validationEventTrigger: "submit",
validateNonVisibleFields: true,
updatePromptsPosition: true
});
$(function () {
$("#tabs").tabs({
beforeActivate: function (event, ui) {
if (!$("#myForm").validationEngine('validate')) {
event.preventDefault();
$('#myForm').validationEngine('hide');
setTimeout(function () {
$("#myForm").validationEngine('validate');
}, 450);
}
}
});
});
В результате пользователь не может выбрать другую вкладку, если вкладка, на которой пользователь находится в данный момент, не полностью действительна. Вот демоверсия JSFiddle: http://jsfiddle.net/g9yLL/36/
Ура!:-)
У меня был веб-сайт с формой с несколькими вкладками и решил это с помощью этого:
$(document).ready(function(){}
$('#tab1').click(function(){
// #tab1 name of the tab / a href link inside that tab
var field1 = $("#field1").validationEngine('validate');
var field2 = $("#field2").validationEngine('validate');
if(field1 || sources )
{ // to show the error messages ;
return false;
}
});
$('#tab2').click(function(){
// #tab2 name of the tab / a href link inside that tab
var field1 = $("#field1").validationEngine('validate');
var field2 = $("#field2").validationEngine('validate');
if(field1 || field2 )
{ // to show the error messages ;
return false;
}
});
);
Для получения дополнительной информации проверьте https://github.com/posabsolute/jQuery-Validation-Engine и найдите проверку поля под заголовком validate.