我想允许用户输入多个日期,并希望我可以使用repeatable
表单字段类型(Joomla 3.3的新版本)。
我确实使用行添加/删除项目的模式弹出窗口,但日历图标不会弹出日历选择器。我只尝试了text
输入,这似乎没问题。
我的表单定义的相关部分:
<field
name="event_dates"
type="repeatable"
id="event_dates"
icon="calendar"
label="Event calendar dates"
select="Select dates"
>
<fields name="jmfields_event_dates">
<fieldset
name="event_dates_modal"
repeat="true"
hidden="true">
<field
name="event_date"
type="calendar"
format="%d-%m-%Y"
label="Date"
/>
</fieldset>
</fields>
</field>
答案 0 :(得分:1)
我还没有尝试在Repeatable字段中包含一个日历字段,但是可重复字段太多了,但有一堆javascript问题/冲突。检查浏览器错误控制台是否存在任何此类问题。我建议等到可重复场变得更稳定。
答案 1 :(得分:0)
我也想做同样的事情,而不是默认的日历字段,我最终使用普通文本字段上的jQuery日期选择器。您在页面上添加jQuery脚本以定位输入字段,并且您需要稍作解决,直到默认日历的实际修复完毕为止。
您的标题中需要以下文件:
JHtml::_('jquery.framework');
JHtml::_('jquery.ui');
$doc =& JFactory::getDocument();
// loaded from the code.jquery.com site
$doc->addStylesheet('http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css');
// I downloaded the datepicker only and placed it in this folder
$doc->addScript(JURI::root().'/media/jui/js/datepicker/jquery-ui.min.js');
字段的xml:
<!-- Course_date Field. Type: Repeatable. (joomla) -->
<field
type="repeatable"
name="course_date"
label="Course Dates"
description="COM_LEARNINGMANAGER_EVENT_COURSE_DATE_DESCRIPTION"
id="course_date"
class="course_dates"
select="COM_LEARNINGMANAGER_EVENT_COURSE_DATE_SELECT"
icon="list"
maximum="50">
<fields name="course_date_fields" label="">
<fieldset hidden="true" name="course_date_modal" repeat="true">
<!-- Course Field. Type: Courses. (custom) -->
<field
type="courses"
name="course"
label="COM_LEARNINGMANAGER_EVENT_COURSE_LABEL"
class="list_class"
button="false"
/>
<!-- Date Field. Type: Text. (joomla) -->
<field
type="text"
name="date"
label="COM_LEARNINGMANAGER_EVENT_DATE_LABEL"
size="20"
maxlength="50"
description="COM_LEARNINGMANAGER_EVENT_DATE_DESCRIPTION"
class="text_area datepicker"
readonly="false"
disabled="false"
filter="STRING"
message="Error! Please add date here."
hint="COM_LEARNINGMANAGER_EVENT_DATE_HINT"
/>
</fieldset>
</fields>
</field>
以下是您需要添加到default.php或edit.php文件的脚本:
<script type="text/javascript">
// means your repteable field can only take 50 rows
<?php $fieldNrs = range(1,50,1); ?>
jQuery('input.form-field-repeatable').on('row-add', function (e) {
<?php foreach($fieldNrs as $nr): ?>
jQuery('#jform_course_date_fields_date-<?php echo $nr ?>').datepicker(
{
minDate: -1,
prevText: '',
nextText: '',
maxDate: '+3M',
firstDay: 1,
dateFormat: 'yy-mm-dd',
onSelect: function(dateText, inst) {
jQuery('#jform_course_date_fields_date-<?php echo $nr ?>').val(dateText);
}
});
<? endforeach; ?>
});
</script>
享受!
答案 2 :(得分:-1)
您可以尝试使用this(&#34;乘数模块&#34;)。我使用不同的方法获得与Joomla可重复表单字段类型相同的结果,并且还避免弹出&#34;弹出窗口弹出&#34;。仍处于开发阶段,但也许您可以尝试使用该概念。问候。
我为解决类似问题做了什么?
我在默认的Joomla可重复表单字段类型中遇到了类似的问题,尤其是使用&#34; pop-up&#34;表单字段类型(例如Joomla&#34; date&#34;)。因此,我创建了某种模块模式(mod_multiplier),其中我使用了不同的方法 - &gt; 我不会重复字段(部分),我想使用相同的部分进行多次插入。
模块mod_multiplier
内部模块xml文件是3个保留字段&#34;包装&#34;,&#34;转发器&#34;和&#34;内容&#34;。
内部&#34;包装&#34;是&#34;可重复的地方&#34;字段:
<fieldset name="basic" addfieldpath="/modules/mod_multiplier/models/fields">
<!-- Wrapper is container for repeatable fields-->
<fields name="wrapper">
<!--This is the place where you insert your fields-->
</fields>
<field name="repeater" label="" type="repeater" />
<field name="content" hidden="true" label="Content" type="hidden" />
</fieldset>
所有内容都将存储在&#34;内容&#34; JSON格式的字段。每当我们按表格时,#34;添加&#34;按钮我们将添加一行数据到&#34;内容&#34;领域。毕竟,内部&#34;内容&#34;我们将有数据行。
如何查看tmpl / default.php文件以及如何获取字段值?
分层数据结构有3个级别:行,行和字段。
mod_multiplier的实际例子:
内部&#34;包装&#34;是字段&#34; country&#34;,&#34; city&#34;我们按名称(在tmpl / default.php中)调用它们,如下所示:
<ul>
<?php foreach ($rows as $row):?>
<li>
<?php echo $row->country;?>:<?php echo $row->city;?>
</li>
<?php endforeach; ?>
</ul>