在Javascript代码中使用流畅功能,而在同一文件中则无效

时间:2019-06-28 14:52:33

标签: javascript jquery typo3 fluid typo3-8.x

我在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。

2 个答案:

答案 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>