LiveValidation + TAI TAbs - одна страница с несколькими проверками - PullRequest
0 голосов
/ 14 февраля 2011

Я использую LiveValidation на livevalidation.com для простой и более сложной проверки форм в большинстве моих проектов.

В основном для улучшения срока действия пользователя.

Что я и сделал. - заменить неверное сообщение из текста в изображение - когда форма отправлена ​​- и недействительна - сфокусироваться на первом недопустимом поле ввода - когда форма отправлена ​​- и недействительна - добавить красную рамку для всех недопустимых полей

Что я пытаюсь сделать: - создать функцию, которая будет проверять форму - но только на текущей вкладке

Как мы можем сделать это «вручную» - Мы можем создать еще одну переменную automaticOnSubmit2 = field4.form.onsubmit;

Где field4 всегда является первым вводом на текущей вкладке. Поскольку мои вкладки будут созданы с неизвестным количеством вкладок - я ищу более универсальное решение.

Я сделал несколько попыток - но мои знания js / jquery очень плохие - поэтому я потерпел неудачу.

// попытка 1

$(".ui-tabs-panel:not(.ui-tabs-hide) > form") 
  • это правильно - firebug можно найти только 1 - открытая / текущая вкладка - где находится форма, которую мы хотим проверить

    $(".ui-tabs-selected").ready(function() {
    var automaticOnSubmit = $(".ui-tabs-panel:not(.ui-tabs-hide) > form").submit;
     $(".ui-tabs-panel:not(.ui-tabs-hide) > form").submit = function(){
        var valid = automaticOnSubmit();
        if(valid)alert('Form is Valid!');
        else{ 
            $(".LV_invalid_field:first", document.forms).focus();
            }
        return false
    }
    

    });

С наилучшими пожеланиями,

Peter

1 Ответ

0 голосов
/ 15 февраля 2011

Демо онлайн 1 Онлайн-демонстрация 2

Zip с обоими

Livevalidation + вкладки jQuery UI Решение:

$("form").each(function (i) {
    var automaticOnSubmit = this.onsubmit;
    this.onsubmit = function(){
        var valid = automaticOnSubmit();
        if(valid)alert('Form is Valid!');
        else{ 
            $(".LV_invalid_field:first", document.getElementById(this.id)).focus();
        }
        return false
    }
});
...