1

我的 Facebox 弹出窗口包含一个带有提交按钮的表单。在我将 jQuery.validate 添加到项目之前,我还有第二个按钮可以打开一个不相关的 Facebox 弹出窗口。我需要在提交之前验证电子邮件和密码字段。

我应该补充一点,这些弹出窗口是通过外部 .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 的链接。我认为这可能是问题所在,但它之前有效。

4

1 回答 1

0

我遇到了同样的问题,并使用来自http://old.nabble.com/Validation-and-Facebox-td22187264s27240.html的信息解决了它

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

... *在facebox的主声明中添加变量dom和dom_data

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;
  }

... * 这是在文件的末尾

于 2011-01-31T21:38:18.500 回答