2013-08-20 80 views
0

我見過其他類似的問題,但反正有問題。來自PHP的JS中的變量

我需要在每次修改時都複製輸入值,然後進行任何計算,然後將結果複製到文本字段中。但我不能夠做到這一點 - 我不知道爲什麼......

這是我的TPL(智者)代碼:

<label>{l s='Quantity:'}</label> 
<input type="text" name="qty" id="quantity_wanted" class="text" onchange="updatevariable(this.value)" value="0" /> 
{assign var="var1" value=$feature.value|escape:'htmlall':'UTF-8'} 
<label>{l s='Quantity 2:'}</label><input type="text" name="qty2" id="quantity_wanted2" class="text" value="" /> 

這是JS:

<script type="text/javascript"> 
    function updatevariable(data) { 
     input = data; 
     var var76 = <?php echo $var1; ?>; 
     quantity_wanted2.value = (math.ceil(input*var76))*var76; 
    } 
</script> 

當我在JS中編寫var76行時,所有這些都不起作用。沒有它,所有的作品(但我沒有這個價值,我需要!)。我能做些什麼來在javascript中導入這個值?

請幫助我!非常感謝你!!

+0

您無法在javascript代碼中運行php,請查看ajax,它將允許您將信息從js傳遞到服務器端的php代碼 –

+0

只有當$ var1是一個數字(如果它不是您需要使用的) 'json_encode'函數。 – jcubic

+0

@BigT你可以把php代碼放在html(帶.php擴展名)裏面,javascript可以在html中。但是你不能把Ajax變成另一種方式來使用php。 – jcubic

回答

0

嘗試以這種方式如果出現在單TPL

{literal} 
    <script type="text/javascript"> 
     function updatevariable(data) { 
      input = data; 
{/literal} 
      var var76 = {$var1} ; 
{literal} 
      quantity_wanted2.value = (math.ceil(input*var76))*var76; 
     } 
    </script> 
{/literal} 
+0

由於JS中的「{」和「}」,它不起作用。 –

+0

它的工作原理!它是如此...簡單! :) –

+0

好吧Elon使用{literal}和{/ literal} – Rohit

0

你引用在HTML中的Smarty的變量,並在呼應的JS代碼PHP變量兩個代碼。這表明這兩個文件在不同的文件中,這意味着不同的範圍。這個完全不同的文件如何知道模板中的var1變量?就好像你會去找你的媽媽,告訴她一個介於1到100之間的祕密數字,然後去你父親問他你告訴你媽媽的號碼。他不知道。

如果你看看你生成的JavaScript文件,你var var76 =行可能看起來像var var76 = ;這正確地產生語法錯誤。

解決這個問題的方法是將JavaScript放在與您的Smarty模板相同的文件中,在您的{assign}行以下的某處。

說了這麼一句話:你的代碼看起來像以後調試的痛苦。 var1到var76的變量?你知道變量65代表什麼嗎?對於你的updatevariable函數也是一樣:該名稱沒有描述函數的實際功能。

+0

它是所有在同一個文件中...所以@Rohit解決了它!非常感謝! –