0

我见过其他类似的问题,但无论如何我都有问题。

每次修改输入值时,我都需要复制它,然后进行任何计算,然后将结果复制到文本字段中。但我做不到——我不知道为什么……

这是我的 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 中导入这个值?

请帮我!!非常感谢!!

4

2 回答 2

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}
于 2013-08-20T13:32:09.003 回答
0

您在 HTML 中引用 Smarty 变量并在 JS 代码中回显 PHP 变量。这向我表明,两者在不同的文件中,意味着不同的范围。这个完全不同的文件如何知道模板中的 var1 变量?就好像你会去找你妈妈,告诉她一个 1 到 100 之间的秘密号码,然后去找你爸爸问他你告诉了妈妈哪个号码。他不能知道。

如果您查看生成的 javascript 文件,您的var var76 =行可能看起来像var var76 = ;正确地产生语法错误。

解决这个问题的方法是将 javascript 放在与 Smarty 模板相同的文件中,位于{assign}行下方的某个位置。

话虽如此:您的代码在以后调试时看起来很痛苦。变量名为 var1 到 var76?你知道变量 65 代表什么吗?您的updatevariable函数也是如此:名称无法描述函数的实际作用。

于 2013-08-20T13:35:23.643 回答