我有一个 Joomla(版本 3.9.4,对子表单很重要,但作为新手,我无法添加创建 Joomla3.9 标记)表单,字段类型设置为“列表”,子表单的最小值和最大值都设置为'6'。该子表单有 1 个字段类型“日历”。所以我看到了列表(带有 3 个选项)和带有 6 个日期选择器项目的子表单。现在我想要的是根据列表的选项更改最小值和最大值。我怎样才能做到这一点?在 PHP 中?还是在 Javascript 中?
我尝试使用 Javascript/jQuery 查找 DOM 中的最小/最大值来查找数据最小值和数据最大值,但是这些项目已经生成,所以为时已晚。
这是form.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<form>
<fieldset>
<field name="type" type="list" default="" label="type" >
<option value="0">Type A</option>
<option value="1">Type B</option>
<option value="2">Type C</option>
</field>
<field
name="dates"
type="subform"
required="true"
label="Dates"
multiple="true"
min="6" <= This is what I want to change based on what was selected in the list
max="6" <= This is what I want to change based on what was selected in the list
>
<form>
<field
name="date"
type="calendar"
label="Date"
default=""
/>
</form>
</field>
</fieldset>
</form>
这是渲染它的 php 部分:
<?php
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
?>
<form action="<?php echo JRoute::_('index.php?option=com_mycom&view=types&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="edit-form" class="form-validate" enctype="multipart/form-data">
<fieldset>
<?php echo $this->form->getField('type')->renderField(); ?>
<?php echo $this->form->getField('dates')->renderField(); ?>
</fieldset>
</form>
我正在研究 2 条路径: 1. 子类添加控件以更改最小值/最大值。不确定这是否可以工作,因为用户更改类型是在 php 生成表单之后发生的。因此,只有在每次更改类型后都重新加载时,这才有效。不喜欢这样,并破坏了默认的 Joomla 表单行为。2. 添加 Javascript 代码,然后根据选择的类型选项显示适当数量的日期选择器。与showon行为相似或延伸的东西。还没有。非常感谢任何指针/帮助。