Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在elgg jQuery中,日期选择器选项不起作用_Javascript_Jquery_Jquery Ui_Datepicker_Elgg - Fatal编程技术网

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

Javascript 在elgg jQuery中,日期选择器选项不起作用,javascript,jquery,jquery-ui,datepicker,elgg,Javascript,Jquery,Jquery Ui,Datepicker,Elgg,我第一次用elgg做实验。elgg_视图(“输入/日期”使用datepicker函数,但我需要添加一些选项 在我的插件(称为“help”)初始化函数(start.php)中,我声明 elgg_扩展_视图('js/elgg','help/js'); 然后,在\mod\help\views\default\help\js.php中,我从elgg核心复制了elgg.ui.initDatePicker函数,并向其添加了选项 elgg.provide('elgg.help') 顶上 elgg.regist

我第一次用elgg做实验。elgg_视图(“输入/日期”使用datepicker函数,但我需要添加一些选项

在我的插件(称为“help”)初始化函数(start.php)中,我声明 elgg_扩展_视图('js/elgg','help/js'); 然后,在\mod\help\views\default\help\js.php中,我从elgg核心复制了elgg.ui.initDatePicker函数,并向其添加了选项

elgg.provide('elgg.help')

顶上

elgg.register\u hook\u 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.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);

它确实打开了一个日历,但它没有应用我的yearRange、changeYear和changemount选项。不过,如果我只是在elgg\js\lib\ui.js中添加这些选项,它可以正常工作。因为我不想弄乱核心文件,所以我在这里寻求提示。谢谢你。

注意,你用这种方式覆盖了elgg.ui.initDatePicker的核心版本

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

如果不使用提供的(elgg.help)对象,也不需要运行elgg.provide

除此之外,我还要确保及时加载JS代码。如何加载代码?elgg_load_JS或一些视图扩展?

使用

elgg_view('input/datepicker',array('name'=>'startDate'));
对于elgg 1.8.16