无法编译.tpl文件中的JS

时间:2013-06-08 17:38:46

标签: php jquery smarty

我的.tpl文件中有以下代码(我正在使用Smarty template engine作为我的项目)。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
   <script>
          $(document).ready(function(){
    $('.check:button').toggle(function(){
        $('input:checkbox').attr('checked','checked');
        $(this).val('uncheck all');
    },function(){
        $('input:checkbox').removeAttr('checked');
        $(this).val('check all');        
    })
})
</script>

<input type="button" class="check" value="check all" />

   <input type="checkbox" class="cb-element" /> Checkbox  1
   <input type="checkbox" class="cb-element" /> Checkbox  2
   <input type="checkbox" class="cb-element" /> Checkbox  3

然而,在最终编译的PHP代码中,JS函数没有出现,因此我要创建的切换(“全部检查”)按钮不起作用。最终编译的php代码,如浏览器中所示:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
   <script>
          $(document).ready(function(),function())
})
</script>

<input type="button" class="check" value="check all" />

   <input type="checkbox" class="cb-element" /> Checkbox  1
   <input type="checkbox" class="cb-element" /> Checkbox  2
   <input type="checkbox" class="cb-element" /> Checkbox  3

我是使用jQuery和Smarty的新手。任何帮助将不胜感激。 jQuery函数已在this SO post中讨论过。

编辑 :我已将JS放在{literal}和{/ literal}中,现在我可以在最终编译的php代码中看到JS函数。但是,JS功能仍然没有响应!为什么会这样?

2 个答案:

答案 0 :(得分:2)

smarty,你添加的JS需要包含{literal}{/literal},以便smarty知道不会正常解释javascript中的“{}”标记,而不是通常解释为聪明的那些标签

答案 1 :(得分:1)

考虑将您的JS放在单独的文件中并链接到它。 Smarty使用{}作为特殊字符。