2013-03-28 2 views
5

Итак, я уже написал специальный метод проверки jQuery. И привязано к 1 или более индивидуальное выпадающие списки. (Я в asp.net, кстати)jQuery Validator на уровне страницы

jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) { 
    var returnValue = false; 
    var selectedIndex = $(select).prop("selectedIndex"); 
    if (selectedIndex != 0) { 
     returnValue = true; 
    } 
    return returnValue; 
}, "Please select a item."); 

Так что это не мой вопрос на самом деле.

У меня есть проверка, которая должна выполняться на уровне страницы. Или, может быть, на уровне «GridView» это лучший способ рассказать об этом.

Вот сценарий: (я использую выдуманные данные, чтобы сделать объяснение проще идти, иначе, я действительно не имеют игрушки и еду)

У меня есть вид сетки.

Column A of the gridview is of no consequence of this, but it exists. 
Column B of the gridview has a DropDownList for "FavoriteToy". 
Column C of the gridview has a DropDownList for "FavoriteFood". 

Так что правила идут примерно так.

Для каждой строки в GridView:

You must pick a FavoriteToy or a FavoriteFood for each row. 
You can pick a FavoriteToy OR a FavoriteFood, but not both on the same row. 
If you pick a FavoriteToy of "TeddyBear" in RowX, none of the other rows can have TeddyBear chosen. (Aka, each row must have a distinct FavoriteToy chosen) 
If you pick a FavoriteFood of "AppleButter" in RowX, none of the other rows can have AppleButter chosen. (Aka, each row must have a distinct FavoriteFood chosen) 

Новые строки могут быть добавлены к GridView, если это желательно. Также есть кнопка «удалить», на всякий случай пользователь исчерпал все комбинации FavoriteToy и FavoriteFood.

Теперь я написал всю логику проверки (используя синтаксис jQuery, чтобы проверять значения и перебирать все) просто отлично.

Я ищу совет о том, как подключить «валидатор общего вида сетки», используя jQuery.validator.addMethod.

Я предполагаю, что смогу подключить его к asp: Ярлык («вход» типа = «текст» на стороне клиента), поэтому появляется сообщение об ошибке.

Или, может быть, вид сетки отображается как «таблица» на стороне клиента.

Какой-либо общий совет?

================================================================================================================================== ======================

То, что я положил в до сих пор:

аспида: чистый контроль:

<asp:HiddenField ID="hidGridViewValidatorPlaceHolder" runat="server" /> 

и метод ниже

jQuery.validator.addMethod("gridViewValiatorMethod", function (value, select, arg) { 
    var returnValue = true; 
    var errorMsg = SuperValidationWrapper(); 
    if (errorMsg != "") { 
     alert(errorMsg); 
     returnValue = false; 
    } 
    return returnValue; 
}, "Please address the issues in the gridview."); 

SuperValidationWrapper() имеет все loopty-петли. И я возвращаю конкатенированную строку, там есть какие-то проблемы. Мне это не нравится, но это то, что я сделал.

В окне предупреждения вы найдете подробную информацию и текст «Пожалуйста, обращайтесь к проблемам в gridview». появляется, если есть какие-либо проблемы.

Любые улучшения оцениваются.

+2

+1 За «ака, я на самом деле не имеют игрушек и продуктов питания» –

+0

Хах! Мне нравится держать фокус на фактической проблеме, а не объяснять объекты моего домена и т. Д. И т. Д. У меня есть эта одна модель шаблонов проектирования C#, которая использует шаблон абстрактной фабрики, используя «Плавательные полосы» ...... и каждый раз, когда я прочитайте, я понятия не имею, что он говорит. Плохой пример для (большинства разработчиков). Но приложение «Игрушки и еда» действительно звучит весело! – granadaCoder

ответ

1

Валидатор действительно предназначен для проверки полей, но поскольку вы не хотите проверять поле, вы не можете привязать свое выражение к полю.

Вам действительно нужно поставить «проверки страницы» логику в обработчике представить

http://docs.jquery.com/Plugins/Validation/validate#options

+0

Этот метод устанавливает обработчики событий для отправки, фокуса, нажатия клавиш, размытия и нажатия, чтобы инициировать проверку всей формы. Спасибо, я рассмотрю рефакторинг немного на основе этого совета. – granadaCoder

Смежные вопросы