在 elgg 中,jQuery 日期选择器选项不起作用

in elgg jQuery datepicker options do not work

本文关键字:选择器 选项 不起作用 日期 jQuery elgg      更新时间:2023-09-26

我第一次用elgg做实验。 elgg_view('input/date' 使用日期选择器函数,但我需要添加一些选项。

在我的插件(称为"帮助")初始化函数(start.php)中,我声明了 elgg_extend_view('js/elgg', 'help/js');然后,在 ''mod''help''views''default''help''js 中.php我从 elgg 核心复制了 elgg.ui.initDatePicker 函数,并向其添加了我的选项。我还添加了

elgg.provide('elgg.help');

在顶部和

elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);

在底部,像这样:

-- ''mod''help''views''default''help''js.php代码的开头

elgg.provide('elgg.help');
elgg.ui.initDatePicker = function() {
    var loadDatePicker = function() {
        $('.elgg-input-date').datepicker({
            // MY OPTIONS ADDED
            yearRange: "-100:+0",
            changeYear: true,
            changeMonth: true,
            // ISO-8601
            dateFormat: 'yy-mm-dd',
            onSelect: function(dateText) {
                if ($(this).is('.elgg-input-timestamp')) {
                    // convert to unix timestamp
                    var dateParts = dateText.split("-");
                    var timestamp = Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]);
                    timestamp = timestamp / 1000;
                    var id = $(this).attr('id');
                    $('input[name="' + id + '"]').val(timestamp);
                }
            }
        });
    };
    if ($('.elgg-input-date').length && elgg.get_language() == 'en') {
        loadDatePicker();
    } else if ($('.elgg-input-date').length) {
        elgg.get({
            url: elgg.config.wwwroot + 'vendors/jquery/i18n/jquery.ui.datepicker-'+ elgg.get_language() +'.js',
            dataType: "script",
            cache: true,
            success: loadDatePicker,
            error: loadDatePicker // english language is already loaded.
        });
    }
}
elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);

--- ''mod''help''views''default''help''js.php 代码的结尾

它确实会打开一个日历,但它不应用我的年份范围,更改年份和更改月份选项。但是,如果我只是在 elgg''js''lib''ui 中添加选项.js它工作正常。由于我不想弄乱核心文件,因此我在这里寻求提示。谢谢

请注意,您以这种方式覆盖了 elgg.ui.initDatePicker 的核心版本。

似乎在init系统上第二次注册了相同的函数(它是由核心注册的,您刚刚更改了实现)

如果您不使用 provided (elgg.help) 对象,也不需要运行 elgg.provide。

除了这个笔记,我会确保JS代码按时加载。你如何加载代码?elgg_load_js还是一些视图扩展?

使用

elgg_view('input/datepicker',array('name'=>'startDate'));

对于 elgg 1.8.16