【问题标题】:forms not submitted after an unbind取消绑定后未提交的表单
【发布时间】:2013-11-28 17:12:24
【问题描述】:

我希望未登录我网站的访问者在点击页面上的任何位置时显示登录弹出窗口。我正在使用 jQuery 来做到这一点

$('body.no-auth a, body.no-auth span, body.no-auth ul, body.no-auth li, body.no-auth p').unbind('click');
$('body.no-auth a, body.no-auth span, body.no-auth ul, body.no-auth li, body.no-auth p, body.no-auth input').click(function(event) {
    event.preventDefault();
    $('#sign-up-overlay').fadeIn('slow');
    $('#login-form').css('margin', ( ( window.innerHeight-$('#login-form').height() )/2 )+"px 0 0 0");
});

它可以工作,我的弹出窗口已显示,但我无法提交登录表单(它是使用 $.ajax 提交的)。当我点击提交按钮时,没有任何附加内容......

我是不是忘记了什么?

【问题讨论】:

  • 您应该始终确保元素在正文中,方法是在您使用的每个选择器中使用body

标签: javascript jquery ajax forms


【解决方案1】:

一旦您加载弹出窗口,请禁用此处理程序,因为它会不断触发和取消您的点击。

一种方法是:

var popup_open = false;
$('body.no-auth a, body.no-auth span, body.no-auth ul, body.no-auth li, body.no-auth p, body.no-auth input').click(function(event) {
    if (popup_open === false) {
        event.preventDefault();
        $('#sign-up-overlay').fadeIn('slow');
        $('#login-form').css('margin', ( ( window.innerHeight-$('#login-form').height() )/2 )+"px 0 0 0");
    }
    popup_open = true;
});

确保在关闭 popup_open 时将其设置为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多