使用jquery .ready()来操作typo3中的链式复选框

时间:2013-07-28 14:59:43

标签: jquery typo3

使用jquery,给定多个复选框,如果选中/取消选中特定复选框,我们可以打开/关闭字段集。 此外,如果默认情况下选中了复选框,则会在页面加载时显示相应的字段集。 见http://jsfiddle.net/Hbmpk/1/ 但是,如果在Typo3中完成此操作,则在页面加载时不会显示字段集。

这是typoscript:

page.includeJSlibs.jquery.external = 1
page.includeJSlibs.jquery = http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js

 page.headerData.10 = TEXT
 page.headerData.10.value (
   <script type="text/JavaScript">
    #show fieldset on page load if checkbox checked  
    $(document).ready(function() {$('#showfruit').toggle($('#fruitid').prop('checked')); });

   #toggle fieldsets
   $(window).load(function(){
   $('#fruitid').change(function(e) {
     $('#showfruit').toggle(this.checked);
});
$('#vegid').change(function(e) {
    $('#showveg').toggle(this.checked);
});
});
   </script>
 )

这是html:

<form>
 Which food group do you like?
 <!-- Fruit is checked by default -->
 Fruit <input type="checkbox" name="nutrition[]" value="Fruit" id="fruitid" checked="checked">
 Veges <input type="checkbox" name="nutrition[]" value="Vegetables" id="vegid">

<!-- toggle fieldsets if checkbox is checked -->
<!-- display showfruit fieldset on page load -->
<fieldset id="showfruit" style="display:none;">
 You chose Fruit! Name one fruit: <input type="text" name= "afruit" />
</fieldset>
<fieldset id="showveg" style="display:none;" >
 You chose Veges! Name one veg: <input type="text" name= "aveg" />
 </fieldset>
 </form>

这是对使用typo3-formhandler验证以及链式复选框和输入的尝试的简化;切换工作最初很好,但是当提交,验证并返回表单时(如果强制问题没有得到回答),则复选框仍保持选中状态,但现在不再显示显示的相应字段集。

ps,jquery感谢Jason P - jquery: toggle a fieldset based upon a specific checked checkbox in an array of multiple checkboxes

1 个答案:

答案 0 :(得分:0)

TYPO3扩展程序jquerycolorbox也处于活动状态。 jquerycolorbox可能包含一个小于1.6的jquery版本,因此不支持.prop() 在jquerycolorbox之上包含更高版本的jquery并没有帮助,并且本质上是不正确的练习。

停用jquerycolorbox并包含jquery 1.10.2/jquery.min.js可以正常使用。

鉴于有问题的页面实际上使用了TYPO3 formhandler验证,也许最好的解决方案是获取初始表单提交结果的一些typoscript,然后相关定义整个字段集,比如###fruit_fieldset### ... < / p>