2012-05-10 49 views
1

我的smarty文件中有兩個選項卡。在tab1中,我有一個包含城市列表的下拉菜單。我有基於城市的模板列表,其中包含有關城市的詳細信息。在第二個選項卡中,我應該根據下拉選擇顯示相關的城市模板。使用Javascript動態更改smarty包含文件

例如: 下拉:

<select name='city' id='city' class="medium" style="float:left" onchange="setCityTpl(this);"> 
<option value=''></option> 
{html_options options=$city_filter selected=$city.name} 
</select> 

如果我在下拉菜單中選擇城市1

我應該在智者設置的第三方物流include文件名作爲city1.tpl

<div id="tab2" class="tab-content" style="display: none; visibility: hidden; padding-top:0px"> 
{include file=city1.tpl} 
</div> 

如果我在下拉菜單中選擇City 2

我應該設置th E在smarty的TPL名稱包括文件作爲city2.tpl

<div id="tab2" class="tab-content" style="display: none; visibility: hidden; padding-top:0px"> 
{include file=city2.tpl} 
</div> 

回答

2

你可以從javascript中加載url,所以我認爲如果用戶從Dropdown1中選擇City1,你的JS將加載city1。 TPL和城2將加載city2.tpl

或者你可以做如下:JS腳本調用與「city1」或「城2」一個POST/GET值的URL(selected-city.php)的selected-city.php檢索selected-city.tpl用參數名稱爲selected(取自POST/GET)和你的tpl:

<div id....> 
{include file=${selected}.tpl} 
</div ...> 
1

smarty的是一個基於php的模板引擎,這意味着它運行在服務器,而上的JavaScript 客戶端運行(用戶的瀏覽器)。因此,在用戶實際看到您的頁面之前,smarty模板已經完成處理,並且已經完成了所有內容。

要實現你想要的,一種方法是包含所有文件並隱藏相應的html元素(例如display:none)。然後,根據用戶的選擇,你會顯示你想要的元素(第二個下拉在你的案例中

+0

謝謝你的回答我會選擇第二個選項。再一次感謝你 – Prabu