如何在Joomla表单中的可重复字段中使用日历字段?
我想让用户能够输入多个日期,并希望我可以使用如何在Joomla表单中的可重复字段中使用日历字段?,joomla,joomla3.3,Joomla,Joomla3.3,我想让用户能够输入多个日期,并希望我可以使用repeatable表单字段类型(Joomla 3.3的新版本) 我确实获得了模式弹出窗口,其中有行用于添加/删除项目,但是日历图标不会弹出日历选择器。我尝试了一个文本输入,似乎效果不错 我的表格定义的相关部分: <field name="event_dates" type="repeatable" id="event_dates" icon="calendar" l
repeatable
表单字段类型(Joomla 3.3的新版本)
我确实获得了模式弹出窗口,其中有行用于添加/删除项目,但是日历图标不会弹出日历选择器。我尝试了一个文本
输入,似乎效果不错
我的表格定义的相关部分:
<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>
我还没有尝试在Repeatable字段中设置日历字段,但是Repeatable字段有很多问题/冲突。在浏览器错误控制台中检查任何此类问题。我建议等待可重复字段变得更稳定。您可以尝试使用(“乘法器模块”)。我使用了不同的方法来获得相同的结果,就像Joomla repeatable表单字段类型一样,也避免了“弹出窗口中的弹出窗口”。仍处于开发阶段,但也许您可以尝试使用该概念。问候 我是如何解决类似问题的? 我对默认的Joomla可重复表单字段类型有类似的问题,尤其是“弹出”表单字段类型(例如Joomla“date”)。正因为如此,我创建了某种模块模式(mod_乘数),在这里我使用了不同的方法->我不会重复字段的形式(section),我希望对多次插入使用相同的section 模块模乘器 模块xml文件中有3个保留字段“包装器”、“转发器”和“内容” “包装器”内是“可重复”字段的位置:
所有内容都将以JSON格式存储在“content”字段中。每次按下表单“添加”按钮时,我们都会向“内容”字段添加一行数据。毕竟,在“内容”中,我们将有一行行数据
它在tmpl/default.php文件中的外观如何,以及如何获取字段值?
分层数据结构有三个层次:行、行和字段
- 所有数据=>$rows
- 一行数据=>$row
- 一个字段=>$row->field\u name
<ul>
<?php foreach ($rows as $row):?>
<li>
<?php echo $row->country;?>:<?php echo $row->city;?>
</li>
<?php endforeach; ?>
</ul>
-
:
我也想做同样的事情,我最终在普通文本字段上使用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>
//意味着您的repteable字段只能占用50行
jQuery('input.form field repeatable')。on('row-add',function(e){
jQuery(“#jform_课程_日期_字段_日期-”).datepicker(
{
minDate:-1,
上一个文本:“”,
下一个文本:“”,
最大日期:'+3M',
第一天:1,
日期格式:'年-月-日',
onSelect:函数(日期文本,inst){
jQuery('#jform_course_date_fields_date-').val(dateText);
}
});
});
享受吧 遗憾的是,这是处理多个约会的好方法。我在控制台中没有发现错误,但我确实注意到日历按钮都有相同的Id。@JanMisker“日历按钮都有相同的Id”-这很有趣,因为它肯定会使页面上的任何代码行为不当