【问题标题】:jQuery.validate may have broken Facebox pop-upjQuery.validate 可能破坏了 Facebox 弹出窗口
【发布时间】:2011-02-01 05:47:55
【问题描述】:

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

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

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

【问题讨论】:

  • 哪个其他按钮?我不清楚这里有哪些问题,你能详细说明一下吗?
  • 另一个“按钮”是&lt;a href="#" onclick="showRegister()"&gt;&lt;img...&gt;&lt;/a&gt;,其中showRegister() 调用.click 存在于“父”页面index.html 上的链接。那有意义吗?此按钮位于 login.html 的表单内。我已经在表单之外尝试过,它的行为是一样的。
  • 那么,看起来我必须自己编写验证吗?

标签: javascript asp.net jquery firebug facebox


【解决方案1】:

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

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

... *在主声明中添加变量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;
  }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多