Как назвать RequiredFieldValidator на клиенте перед обратной передачей

Я наследовал некоторый код, который разбивает страницу в отделения использования вкладок. На первой странице существуют многие обязательное поле и regex блоки проверки допустимости. Проблемой является пользователь, может переключиться на другую вкладку, инициировать обратную передачу и привести блоки проверки допустимости к сбою на первой странице, оставив вещи в путанице.

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

<ul>                        
     <li><a href="#tab1">Tab 1</a> </li>
     <li><a href="#tab2" onclick="return isValid();">Tab 2</a></li> 
     <li><a href="#tab3" onclick="return isValid();">Tab 3</a></li> 
</ul>

Где isValid потребности исчерпать блоки проверки допустимости.

Спасибо!

ОБНОВЛЕНИЕ: ответ, предоставленный codeka, достаточно близок, однако, потому что я должен обеспечить и href и атрибуты onclick (чтобы не портить дисплей), вкладка переключатель (привязки) все еще происходит, даже если проверка перестала работать. Вот то, как я решил это.отказ от ответственности: ужасный код вперед

<ul>                        
    <li><a id="tab1Tab" href="#tab1" style="display:none"/><a onclick="isValid('tab1');">Tab 1</a></li>
    <li><a id="tab2Tab" href="#tab2" style="display:none"/><a onclick="isValid('tab2');">Tab 2</a></li>
    <li><a id="tab3Tab" href="#tab3" style="display:none"/><a onclick="isValid('tab3');">Tab 3</a></li>
</ul>

function isValid(tab) {
    var valid = Page_ClientValidate();
    var tabId = (valid ? tab : "tab1") + "Tab";
    $("#" + tabId).click();
}

Отметьте использование jQuery для перекрестной совместимости браузера с событием щелчка. И это только работает, если не будет никаких блоков проверки допустимости на других вкладках согласно ответу Thomas, то я должен буду использовать группы проверки и дополнительную логику в isValid если кто-либо добавляется.

6
задан si618 22 March 2010 в 03:04
поделиться

2 ответа

ASP.NET создает глобальную функцию javascript Page_ClientValidate , которую можно вызвать для запуска валидаторов:

function isValid() {
    return Page_ClientValidate();
}
2
ответ дан 17 December 2019 в 07:02
поделиться

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

function TabValidate( tabName ) {
    if ( Page_ClientValidate( tabName ) ) {
        //do stuff
    }
}

ДОБАВЛЕНИЕ Я упомянул об этом в комментарии, но решил, что добавлю это в свой пост. Если на других вкладках нет других валидаторов, то другим решением будет просто пометить другие элементы управления .NET на других вкладках, которые могут запускать обратную передачу с помощью CausesValidation = "false" (например, DropDownLists с AutoPostBack = "true")

2
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: