我在Fluid模板的Javascript代码内部使用了Fluid变量。代码是:
<script type="text/javascript">
$(function () {
$('#{element.uniqueIdentifier}').datetimepicker();
/*Call AJAX*/
$('#{element.uniqueIdentifier}').change(function (event) {
.... //Other code lines
});
});
</script>
呈现的HTML是:
<script type="text/javascript">
$(function () {
$('#solicituddeAuditorios-repeatablecontainer-1_0_datetimepicker-2').datetimepicker();
/*Call AJAX*/
$('#{element.uniqueIdentifier}').change(function (event) {
.... //Other code lines
});
});
</script>
渲染时,第一个值将被正确替换,而下一个则不会被替换,并在javascript中生成语法错误。我试图使用变量来保存值,但是在那种情况下,没有流体变量被替换;并使用<![CDATA[ { ]]>
会产生其他错误,这些错误转义了javascript并且仅显示变量。
我正在使用TYPO3 8.7。
答案 0 :(得分:0)
我认为您应该像这样包装代码:
<script type="text/javascript">
<![CDATA[var myUniqueElementIdentifier = "#" + ]]>{element.uniqueIdentifier}<![CDATA[;]]>
$(function () {
$(myUniqueElementIdentifier).datetimepicker();
/*Call AJAX*/
$(myUniqueElementIdentifier).change(function (event) {
.... //Other code lines
});
});
</script>
答案 1 :(得分:0)
我不知道发生了什么,因为很多时候,不同的解决方案像普通的流畅键({}
或<![CDATA
一样工作。在这种情况下,另一个可行的替代方法是使用f:format.raw
流体标签
<script type="text/javascript">
$(function () {
$('#solicituddeAuditorios-repeatablecontainer-1_0_datetimepicker-2').datetimepicker();
/*Call AJAX*/
$('#<f:format.raw>{element.uniqueIdentifier}</f:format.raw>').change(function (event) {
.... //Other code lines
});
});
</script>