Ошибка проверки jQuery для fancybox

У меня есть форма с двумя невидимыми DIV, которые становятся видимыми после нажатия кнопки, всплывающего окна fancybox. У меня есть плагин jQuery validatorengine, который выполняет все проверки. Проблема в том, что механизм проверки работает нормально для обычных полей, но не для скрытых полей, которые находятся внутри окна fancybox, когда они видны. Я подозреваю, что это связано с тем, что fancybox во время выполнения выводит их за пределы <form/>, что приводит к сбою механизма проверки, поскольку он не может работать с элементами вне тега формы.

$(document).ready(function() {  
  $("#category").validationEngine('validate');
  $('#wrapper #addCat').live('click', function() {
  $('<a href="#addCategoryDiv"/>').fancybox({
    'autoDimensions' : false,
    'hideOnContentClick' : false,
    'height' : 450,
    'width' : 500,
    'scrolling' : 'no'
    }).click();
  });
  $('#wrapper #editCat').live('click', function() {
    $('<a href="#editCategory"/>').fancybox({
      'autoDimensions' : false,
      'hideOnContentClick' : false,
      'height' : 450,
      'width' : 500,
      'scrolling' : 'no'
      }).click();
  });
});

Может кто-нибудь помочь мне, как это исправить? В Firebug я вижу, что fancybox сделал <div style="display:none"> частью кода за пределами тега <form></form>.


person Sachin    schedule 18.10.2012    source источник
comment
или, может быть, я задаю ДЕЙСТВИТЕЛЬНО сложные вопросы, пожалуйста, прочтите их и попытайтесь ответить на некоторые из них, а не редактируйте английский текст, извините, но это не помогает.   -  person Sachin    schedule 18.10.2012


Ответы (1)


Вам нужно поместить код инициализации вашего модуля проверки подлинности в метод fancybox onComplete:

$('<a href="#editCategory"/>').fancybox({
                'autoDimensions'        : false,    
                'hideOnContentClick'    : false,
                'height'                : 450,
                'width'                 : 500,
                'scrolling'             : 'no'
                'onComplete'            : function(){
                                              $("#category").validationEngine('validate');   
                                          }
            }).click();
person Hailwood    schedule 18.10.2012
comment
Причина в том, что код fancybox вышел за рамки тега ‹form› во время выполнения, а плагин jquery validationengine можно применить только к коду внутри тегов ‹form› - person Sachin; 18.10.2012
comment
Хорошо, я скоро отредактирую ответ, но как насчет ручного вызова проверки входных данных вручную? - person Hailwood; 18.10.2012
comment
у тебя была возможность посмотреть на это? Я попробовал stackoverflow.com/questions/2686362/, но вроде ничего не работает :( - person Sachin; 19.10.2012