2011-04-28 51 views
1

您好我正在使用jQuery UI选项卡作为窗体。jQuery UI选项卡:从单个文件/页面加载选项卡而不使用Ajax或iframe

因此,我无法使用Ajax,因为发送表单时必须存在所有标签/内容。该表格由9个不同的选项卡组成,每个选项卡都有很多代码。

现在我想将这些选项卡的内容外包给每个单独的文件(tab1.php,tab2.php,...)。

我到目前为止的解决方案:

  1. 我可能包括在<head>的所有文件(tab1.php,...),比装载每个内容作为变量。 我不喜欢这样,因为所有的转义代码看起来很乱。

  2. 我使用iframe。点击时只能加载框架。

    <div id="tab-1"> 
        <iframe src="..."></iframe> 
    </div> 
    

有没有更好的方法吗? 也许使用Ajax load-onceAll或类似的东西?...也许是防止iframe重新加载......我不知道。

+0

我不明白这个要求:*我不能使用ajax,因为发送表单*时所有的标签/内容都必须存在。你能详细说明为什么你认为发送表单会阻止你使用ajax吗?此外,一些小例子的代码可能有助于更好地说明你在做什么。 – Cheeso 2011-04-28 18:56:48

+0

嗨。如果有人发送表单,所有标签都必须呈现/加载,因为表单取决于所有标签。该表单还有一些相互作用(在第一个选项卡中选择一个复选框 - >在第二个选项卡中交替一些值,等等......)。 – Email 2011-04-28 19:03:43

回答

1

您可以外包的代码单独的文件然后拉在自己的内容与阿贾克斯jQuery的呼叫时,页面加载:

var tabs = [ 
    { 
     url: 'tab1.php', 
     $ctrl: $('div#tab1') 
    }, 
    { 
     url: 'tabN.php', 
     $ctrl: $('div#tabN') 
    } 
]; 

for(var i = 0; i < tabs.length; ++i) 
{ 
    var data = $.ajax({ 
    url: tabs[i].url, 
    async: false 
    }).responseText; 
    tabs[i].$ctrl.html(data); 
} 

然后你可以使用一些验证中的各个选项卡形式onSubmit功能,以确保直到全部完成后才会将其回传。这只是一个可能的解决方案。

0

您是否已经尝试使用jQuery添加选项卡dynamicaly的内容?我的意思是你用一个div白衣ID "tab1_div"然后添加使用

$("#tab1_div").html("my html content for the tab-page"); 

如果这样的作品,你可以使用$.get(...)阿贾克斯选项卡中的HTML代码的HTML。

相关问题