0

我是逐步增强 HTML5 表单的新手,我目前正在尝试使用 jQuery UI 和 HTML5 的新输入类型来创建跨浏览器表单。我正在使用ModernizrYepnope有条件地加载脚本并遵循CSS-tricks.com上提供的教程。但我遇到了Object [object Object] has no method 'datepicker'错误。

我发现有Modernizr.load()which 可以用来代替yepnope(),但这没有用并最终出现Object #<Object> has no method 'load'错误,所以我回到yepnope(). 以下是<Head>网页的部分内容。

<Head>
    <title>HTML5 Web Form</title>
    <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="js/modernizr-2.5.2.js"></script>
    <script type="text/javascript" src="js/yepnope.1.5.2-min.js"></script>
    <script type="text/javascript" src="js/custom.js"></script>
    <script type="text/javascript">
    yepnope({
            test: Modernizr.inputtypes.date,
            nope: [
                    "./js/jquery-ui-1.8.17.custom.min.js",
                    "./css/jquery-ui-1.8.17.css"
            ]
    });

    $(function(){
        $("input[type='date']").datepicker(); //this is giving error
    });
    </script>
</Head>

并且<body>有一个形式<input type='date' name='dtTest'/>

经过一番谷歌搜索,我发现错误的原因是两次加载 jQuery Core,我也跟着这个,但无法解决问题。

谢谢。

注意:我正在 Chrome 17 和 Opera 11.61 中测试页面。

4

1 回答 1

1

这是您的 HTML 页面的外观:

<!DOCTYPE html>
<Html>
    <meta charset="utf-8">
    <head>
        <title>HTML5 Web Form</title>
        <script type="text/javascript" src="js/modernizr-2.5.2.js"></script>
        <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
        <script type="text/javascript" src="js/yepnope.1.5.2-min.js"></script>
        <script type="text/javascript">

            yepnope({
                test : Modernizr.inputtypes && Modernizr.inputtypes.date,
                nope : [
                    'js/jquery-ui-1.8.17.min.js',
                    'css/jquery-ui-1.8.17.css',
                    'js/datepicker.js'
                ],
                callback : {
                    'jquery-ui-1.8.17.min.js' : function() {
                         $("input[type='date']").datepicker();
                    }
                }
            });
        </script>
    </head>
    <body>
        <div id="lblTest">Hello World</div><br/>
        <form name="frmMain" action="#">
            Date : <input type='date' name='dtTest'/>
        </form>
    </body>
</Html>

datepicker.js 的内容应该是:

$(function() {
    $("input[type='date']").datepicker();
});

这在我的 Chrome 副本上运行良好,尽管我没有机会在其他浏览器中检查它。

更新:我们可以通过更有效地datepicker.js使用callbackyepnope 块并datepicker()自行绑定来避免使用单独的。

于 2012-02-14T15:00:53.223 回答