jQuery.validate可能已经破坏了Facebox弹出窗口

时间:2010-10-05 22:35:05

标签: javascript asp.net jquery firebug facebox

我的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>

Nick帮助我在this帖子中发布了表单,但它似乎打破了另一个按钮。我在调试脚本时遇到问题,因为我不知道Firebug是否可以在外部请求(通过XHR)页面设置断点。

我尝试将一个点击处理程序添加到刚刚调用showRegister()的破坏按钮,但这也没有用。 showRegister()简单调用$('#linkFromIndexDotHtml').click();,实际上是来自index.html的链接。我认为这可能是问题所在,但事先有效。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并使用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;
  }

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