簡體   English   中英

使用Javascript動態更改smarty包含文件

[英]Dynamically change smarty include file using Javascript

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

例如:下拉:

<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

我應該在smarty包含文件中將tpl名稱設置為city1.tpl

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

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

我應該在smarty包含文件中將tpl名稱設置為city2.tpl

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

您可以從javascript加載網址。 所以我認為如果用戶從Dropdown1中選擇City1,你的JS將加載city1.tpl,City2將加載city2.tpl

或者您可以執行以下操作:js腳本使用帶有“city1”或“city2”的POST / GET值調用url( selected-city.php )。 selected-city.php檢索selected-city.tpl名為參數selected和您的TPL(從POST / GET拍攝):

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

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

要實現您想要的,一種方法是包含所有文件並隱藏相應的html元素(例如display:none)。 然后,根據用戶的選擇,您將顯示您希望的元素(在您的情況下第二次下拉)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM