Как заставить валидацию JQuery Tools работать в диалоговом окне наложения? - PullRequest
1 голос
/ 06 января 2011

У меня есть простое диалоговое окно ввода текста, работающее с наложениями jQT - щелкните ссылку, откроется наложение с формой, заполните форму, нажмите «Отправить», и форма будет обработана. Сейчас я пытаюсь добавить проверку в форму, но проверка никогда не происходит. Если я отключу наложение на ссылку и позволю форме открыться в отдельном окне, проверка будет работать правильно, поэтому я относительно уверен, что у меня правильно настроены базовые средства проверки. Эта версия без наложения является тем, что происходит в http://flowplayer.org/tools/demos/validator/index.html - страница, содержащая форму, загружена, проверка настроена, и код проверки запускается при отправке формы.

Проблема с оверлейной версией, как мне кажется, заключается в том, что проверка не была настроена должным образом, скорее всего потому, что форма не была найдена. Оверлейная форма не существует, пока ссылка не нажата, поэтому вызов validator () не может быть на главной странице, содержащей ссылку. Я попытался прикрепить тэг SCRIPT, содержащий вызов validator (), в конец кода формы, когда он создается, но это не работает. Также не вызывается validator () для соответствующего идентификатора из кода jQuery, который устанавливает оверлейную форму. Во всех случаях я не вижу никаких ошибок JavaScript в консоли. Arggh.

Я бы подумал, что это обычное использование форм и проверки jQT, но я просто не могу понять, что здесь происходит (или не происходит здесь). Любой совет? Спасибо!

1 Ответ

2 голосов
/ 06 января 2011

Вы можете просто нажать на событие onLoad в оверлее:

$("#dialog").overlay({
    load: true,
    onLoad: function() {
        $("#form").validator();
    },
    onBeforeClose: function() {
        $("#form").data("validator").reset();
    }
});

Редактировать: Добавлен обработчик onBeforeClose для сброса проверки формы после закрытияoverlay.

Кроме того, убедитесь, что CSS-свойство z-index для ошибок выше z-индекса наложения.

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

Форма наложения не существует, пока не будет нажата ссылка, поэтому вызов validator ()не может быть на главной странице, содержащей ссылку

Это не совсем правильно: если вы проверите свой HTML с помощью FireBug, вы увидите, что элементы наложения просто скрыты и будут показаныи CSS будет применен к div, чтобы он выглядел как модальный диалог.form всегда должен существовать в DOM.

Посмотрите рабочий пример здесь: http://jsfiddle.net/andrewwhitaker/SYPSG/

...