Jquery Fancybox iframe表单操作-使用ajax

Jquery Fancybox iframe表单操作-使用ajax,jquery,ajax,fancybox,Jquery,Ajax,Fancybox,我已经创建了一个窗体弹出窗口,在页面的鼠标上有一个隐藏的触发器。通过这种方式,我对输入的值进行了全面检查,然后使用ajax数据到php发送电子邮件。在那之前一切都很好。现在我需要从index.html中删除html内容,并从外部文件(例如form.html)中添加它。我已经决定使用iframe,所以我设法使表单显示为一个弹出窗口,但是表单提交或输入值检查现在失败了。我使用的是旧的fancybox版本,而不是版本2。使用jQuery选择器等保留的所有控件,现在甚至按钮“提交”点击都无法识别。然后我

我已经创建了一个窗体弹出窗口,在页面的鼠标上有一个隐藏的触发器。通过这种方式,我对输入的值进行了全面检查,然后使用ajax数据到php发送电子邮件。在那之前一切都很好。现在我需要从index.html中删除html内容,并从外部文件(例如form.html)中添加它。我已经决定使用iframe,所以我设法使表单显示为一个弹出窗口,但是表单提交或输入值检查现在失败了。我使用的是旧的fancybox版本,而不是版本2。使用jQuery选择器等保留的所有控件,现在甚至按钮“提交”点击都无法识别。然后我考虑了on()函数,所以我写了

$("#submit").on('click', function() { ... });
但不是同一个问题。有什么想法吗?也许我不必使用iframe,而是使用ajax来加载内容,然后再加载()。我也尝试过,但我有弹出内容形式的问题,无法正确显示

这就是我到目前为止所取得的全部进步

$(document).ready(function(){
'use strict';

//Bring form.html content with ajax into the page
$('body').append('<a id="trigger" href="#form_id"></a>');

//Check for mobile device, if jQuery.browser.mobile is false then we have a desktop or a laptop
if(!jQuery.browser.mobile)
{

    //Popup is triggered when mouseleave effect happens
    $(document).mouseleave(function() {

        'use strict';
        //Check if cookie popup already exists
        var popupCookie = COOKIE.getCookie('popup');

        //If it is then popup doesn't show
        if(!popupCookie)
        {//Popup appears but a popup cookie is set with duration set to 24 hours from now

            //Set expiration limit in 24 hours
            var expire = new Date();
            var time = expire.getTime();
            time += 24 * 3600 * 1000;//Exactly 24 hours from now
            expire.setTime(time);

            //Set a popup cookie
            COOKIE.setCookie('popup', 'popup', expire);

            $("#trigger").fancybox();
            //Triggers popup
            $("#trigger").trigger('click');

$.ajax({
  url: "form.html",
  success: function(data){
   $('body').append(data);
  }
});

            //Reset values
            $('input:text').val('');
            $('textarea').val('');
            $('#fancybox-content').css('background-color','#fff');          

            //Popup form function
            $("#trigger").fancybox({
                'scrolling'         : 'no',
                'hideOnOverlayClick': false,
                'onClosed'          : function() {
                                        $('input:text').val('');
                                        $('textarea').val('');
                                    },
                'autoDimensions'    : true,
                'padding'           : 5,
                'transitionIn'      : 'elastic',
                'onStart'           : function(){
                                        $('#fancybox-content').css('background-color','#fff');                  
                                    }
            }); 

    $("#submit").on('click', function() { ... });
   }
  });
});
$(文档).ready(函数(){
"严格使用",;
//使用ajax将form.html内容带入页面
$('body')。追加('');
//检查移动设备,如果jQuery.browser.mobile为false,则我们有一台台式机或笔记本电脑
如果(!jQuery.browser.mobile)
{
//当鼠标移动效果发生时会触发弹出窗口
$(文档).mouseleave(函数(){
"严格使用",;
//检查cookie弹出窗口是否已经存在
var popupCookie=COOKIE.getCookie('popup');
//如果是,则不会显示弹出窗口
如果(!popupCookie)
{//弹出窗口出现,但弹出cookie的持续时间设置为24小时
//在24小时内设置过期限制
var expire=新日期();
var time=expire.getTime();
时间+=24*3600*1000;//从现在算起正好24小时
expire.setTime(time);
//设置弹出cookie
setCookie('popup','popup',expire);
$(“#触发器”).fancybox();
//触发弹出窗口
$(“#触发器”).trigger('click');
$.ajax({
url:“form.html”,
成功:功能(数据){
$('body')。追加(数据);
}
});
//重置值
$('input:text').val('');
$('textarea').val(“”);
$('#fancybox content').css('background-color','#fff');
//弹出窗体函数
$(“#触发器”).fancybox({
“滚动”:“否”,
“HideOnOvercyclick”:false,
“onClosed”:函数(){
$('input:text').val('');
$('textarea').val(“”);
},
“自动维度”:true,
“填充”:5,
“transitionIn”:“弹性”,
“onStart”:函数(){
$('#fancybox content').css('background-color','#fff');
}
}); 
$(“#提交”)。on('click',function(){…});
}
});
});

你在那个页面上加载jQuery吗?当使用iframe时,页面是完全独立的动物,所以它们需要自己的功能。所以js必须在iframe中独立于index.html中的js,对吗?但我不想在那里包含任何js。所以我的想法是垃圾。我没有想到,我认为这就像ajax fetch一样。(仍在学习)在我尝试用ajax从form.html中提取全部内容作为隐藏内容之前,我试图触发弹出窗口,因此必须在弹出窗口之前将表单的可见性更改为可见,但表单没有正确显示。然后我必须再次将其隐藏,等等,所以整个概念在我看来非常复杂和无用。有什么想法吗?客户端希望加载from外部源。实际上,您可以通过ajax而不是iframe将表单拉入文档,以便表单将使用的脚本和样式将位于索引页中。另一方面,如果使用iframe,您也可以从索引页获取一些值并将其传递给form.html……但是form.html必须有自己的jQuery和scripts如果您想添加
.on()
提交功能。我想您需要发布您正在使用的代码…我个人没有太多时间从头开始编写完整的解决方案(免费);如果您有耐心,我会在一分钟内发布代码