jQuery.validate, возможно, сломал всплывающее окно Facebox - PullRequest
1 голос
/ 06 октября 2010

Всплывающее окно My Facebox содержит форму с кнопкой отправки. У меня также есть вторая кнопка, чтобы открыть несвязанное всплывающее окно Facebox, которое работало до того, как я добавил jQuery.validate в проект. Мне нужно проверить поля электронной почты и пароль перед отправкой.

Я должен добавить, что эти всплывающие окна загружаются через внешние файлы .html. Это загрузило их через AJAX-запрос.

В index.html , всплывающие окна настроены ( $ k равно jQuery.noConflict ());

$k('a[rel*=example_2]').facebox_1({
    loading_image : '/images/loading.gif',
    close_image   : '/images/closelabel.gif'
});

И ссылка нажала, чтобы открыть вышеуказанный Facebox:

<a href="login.html" title="Log In" rel="example_2" id='login'>Log In </a>

И все, что ниже, находится в login.html

Проверка:

$(function () {
    $('form[name="login"]').validate({
        rules: {
            email: { required: true, email: true },
            password: "required"
        },
        messages: {
            email: "",
            password: ""
        }
    });
});

И форма:

<form name="login" method="post" action="login.aspx">

И кнопка, которая не работает

<a href="#" title="Register" onclick="showRegister()" ><img src="images/register.jpg" /></a>

Ник помог мне получить форму для публикации в этой записи, но, похоже, она сломала другую кнопку. У меня проблемы с отладкой скрипта, потому что я не знаю, может ли Firebug устанавливать точки останова на страницах с внешними запросами (через XHR).

Я попытался добавить обработчик кликов к сломанной кнопке, которая просто вызывала showRegister (), но это тоже не сработало. showRegister() простые вызовы $('#linkFromIndexDotHtml').click();, что на самом деле является ссылкой из index.html. Я думал, что это может быть проблемой, но это сработало до.

1 Ответ

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

У меня была такая же проблема, и я решил ее с помощью информации от http://old.nabble.com/Validation-and-Facebox-td22187264s27240.html

$.extend($.facebox, {
    settings: {
    dom_data: null,
    dom: null,

... * добавьте переменные dom и dom_data в основное объявление facebox

if (href.match(/#/)) {
      var url    = window.location.href.split('#')[0]
      var target = href.replace(url,'')
      $.facebox.settings.dom = target;
      $.facebox.settings.dom_data = $(target).children();
      $.facebox.reveal($(target).children().show(), klass)

... * это в fillFaceboxFromHref

наконец,

$(document).bind('close.facebox', function() {
  if($.facebox.settings.dom){
  $($.facebox.settings.dom).append($.facebox.settings.dom_data);

  $.facebox.settings.dom = null;
  $.facebox.settings.dom_data = null;
  }

... * это в конце файла

...