Я создал мастер извлечения с использованием вкладок пользовательского интерфейса jQuery на веб-сайте Asp.Net MVC 3.Каждая вкладка в мастере загружает частичное представление, содержащее форму.Если форма действительна, я отправляю данные формы и сохраняю их в базе данных.
В настоящее время я могу проверить проверку на стороне клиента и, если текущая вкладка недействительна, запретить следующую / предыдущую вкладкуот выбора при нажатии следующей или предыдущей кнопки, используя метод, описанный здесь http://jqueryui.com/demos/tabs/#...prevent_switching_to_the_tab_on_click_depending_on_form_validation.
Однако, не вся проверка может быть выполнена на стороне клиента, поскольку нам необходимо выполнить некоторые проверки на стороне сервера.Поэтому, если вкладка проходит проверку на стороне клиента, я отправляю форму и проверяю ответ, полученный с сервера.Если проверка на стороне сервера проходит, возвращается пустая строка, но в случае неудачи я возвращаю то же частичное представление для этой вкладки.
Вот функция выбора в моем селекторе вкладок пользовательского интерфейса jQuery:
select: function (event, ui) {
var checkOutTabs = $(".checkout-tabs").tabs();
var currentTabIndex = checkOut.getSelectedTabIndex();
var currentTab = $(".checkout-step").get(currentTabIndex);
var isValid = checkOut.validateTab(currentTab, ui.index);
//prevent tab change
if (!isValid) {
return false;
}
var form = $(currentTab).find("form");
//Submit this tab
$.post(form.attr("action"), form.serialize(), function (data) {
if (!data) {
checkOutTabs.tabs("enable", ui.index + 1);
return true;
} else {
$(currentTab).find(".checkout-step").parent().html(data);
return false;
}
});
}
Проблема, с которой я столкнулся, заключается в том, что как только я вызываю метод jQuery $ .post (), вкладки переключаются на следующую вкладку, независимо от того, возвращаю ли я значение true или false.Я нашел сообщение ( Лучший способ создания вкладок jQuery ), в котором реализована знакомая реализация, но они не сообщили об этой проблеме.Я делаю что-то не так, или это ожидаемое поведение?