菜单(JS)和日历(JS)错误

时间:2014-08-25 19:37:53

标签: javascript jquery html5

我有一个带JS的菜单,它运行得很完美,但我有一个包含以下代码的日历页面

<script type="text/javascript">
$(function() {
$("‪#‎fecha_nac‬").datepicker({dateFormat: "yy-mm-dd"}).val()
});
</script>

如果我把上面的代码说明菜单已损坏。

菜单会打开,按下这个代码的菜单,我能死吗?

我考虑使用HTML5日期,但Firefox不支持此功能。

菜单代码:

$( document ).ready(function() {
$('#cssmenu li.has-sub>a').on('click', function(){
                $(this).removeAttr('href');
                var element = $(this).parent('li');
                if (element.hasClass('open')) {
                        element.removeClass('open');
                        element.find('li').removeClass('open');
                        element.find('ul').slideUp();
                }
                else {
                        element.addClass('open');
                        element.children('ul').slideDown();
                        element.siblings('li').children('ul').slideUp();
                        element.siblings('li').removeClass('open');
                        element.siblings('li').find('li').removeClass('open');
                        element.siblings('li').find('ul').slideUp();
                }
        });

        $('#cssmenu>ul>li.has-sub>a').append('<span class="holder"></span>');

        (function getColor() {
                var r, g, b;
                var textColor = $('#cssmenu').css('color');
                textColor = textColor.slice(4);
                r = textColor.slice(0, textColor.indexOf(','));
                textColor = textColor.slice(textColor.indexOf(' ') + 1);
                g = textColor.slice(0, textColor.indexOf(','));
                textColor = textColor.slice(textColor.indexOf(' ') + 1);
                b = textColor.slice(0, textColor.indexOf(')'));
                var l = rgbToHsl(r, g, b);
                if (l > 0.7) {
                        $('#cssmenu>ul>li>a').css('text-shadow', '0 1px 1px rgba(0, 0, 0, .35)');
                        $('#cssmenu>ul>li>a>span').css('border-color', 'rgba(0, 0, 0, .35)');
                }
                else
                {
                        $('#cssmenu>ul>li>a').css('text-shadow', '0 1px 0 rgba(255, 255, 255, .35)');
                        $('#cssmenu>ul>li>a>span').css('border-color', 'rgba(255, 255, 255, .35)');
                }
        })();

        function rgbToHsl(r, g, b) {
            r /= 255, g /= 255, b /= 255;
            var max = Math.max(r, g, b), min = Math.min(r, g, b);
            var h, s, l = (max + min) / 2;

            if(max == min){
                h = s = 0;
            }
            else {
                var d = max - min;
                s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
                switch(max){
                    case r: h = (g - b) / d + (g < b ? 6 : 0); break;
                    case g: h = (b - r) / d + 2; break;
                    case b: h = (r - g) / d + 4; break;
                }
                h /= 6;
            }
            return l;
        }
});

控制台出错: enter image description here

2 个答案:

答案 0 :(得分:0)

您正在使用jQuery 1.5,on()之前未添加jQuery 1.7因此错误。您需要升级到更新版本的jQuery。由于1.5到1.7有一些很大的变化,如果日期选择器代码有问题就不会感到惊讶。因此,您可能必须在noConflict模式下加载更新版本的jQuery。

答案 1 :(得分:0)

解决方案:将$替换为$ date并添加以下行:

$date = jQuery.noConflict();

代码:

<script type="text/javascript">

    $date = jQuery.noConflict();
    $date(function() {
        $date.datepicker.regional['es'] = {
            closeText: 'Cerrar',
            prevText: '<Ant',
            nextText: 'Sig>',
            currentText: 'Hoy',
            monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
            monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
            dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
            dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Juv', 'Vie', 'Sáb'],
            dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],
            weekHeader: 'Sm',
            dateFormat: 'dd/mm/yy',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: ''
        };

        $date.datepicker.setDefaults($date.datepicker.regional['es']);
        $date("#fecha_nac").datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: "yy-mm-dd",
            minDate: "-50Y", maxDate: "-10Y",
        });
    });
                            </script>