未捕获的类型错误:$(…).日期选择器上的日期选择器错误

Uncaught TypeError: $(...).datepicker error on datepicker

本文关键字:错误 日期 选择器 类型      更新时间:2023-09-26

所以我想有一个文本字段,日历弹出,用户可以轻松地选择一个日期。然而,当我试图调试为什么日历不弹出时,我得到Uncaught TypeError: $(...).datepicker is not a function错误。

下面是我的代码,善意的建议。我甚至在这个论坛上搜索,但无法解决它。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>date</title>
    <!-- Fonts -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" integrity="sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" crossorigin="anonymous">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700">
    <!-- Styles -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
    
</head>
<body id="app-layout"  class="fuelux">
    <nav class="navbar navbar-default navbar-static-top">
        <div class="container">
            <div class="navbar-header">
                <!-- Collapsed Hamburger -->
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                    <span class="sr-only">Toggle Navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <!-- Branding Image -->
            </div>
            <div class="collapse navbar-collapse" id="app-navbar-collapse">
                <!-- Left Side Of Navbar -->
                <ul class="nav navbar-nav">
                    <li><a href="#" class="log" style="color:white">Sisimsha Booking Engine</a></li>
                </ul>             
            </div>
        </div>
    </nav>
<div class="container">
<div class="row">
<div class="col-lg-5 col-sm-5 col-xs-12">
 <div class="form-group{{ $errors->has('date') ? ' has-error' : '' }}">
    <label for="Event Date">Event Date</label>
    <input name="date" type="text" class="form-control" id='datepicker'  placeholder="Date" 
 </div>  
</div>
</div>
<div class="row">
<div class="col-lg-12 col-sm-12 col-xs-12">
<a href="coupleDetails" class="btn btn-primary"> Back </a>
<input type="submit" class="btn btn-primary pull-right" value="Next">
</div>
</div>
    </form>
  </div>
</div>
</div>
</div>
    <!-- JavaScripts -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js" integrity="sha384-I6F5OKECLVtK/BL+8iSLDEHowSAfUo76ZL9+kGAgTRdiByINKJaqTPH/QVNS1VDb" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
   <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 <script>
  $(function() {
    $( "#datepicker" ).datepicker().datepicker( "option", "dateFormat", 'yy-mm-dd');
  });
  </script>
</body>
</html>

劳驾,谁能让我知道我做错了什么?谢谢你。

你包含了三个不同的jQuery.js副本,包括一个之后的jQuery-UI. js包含,所以当你使用$时,你会得到没有jQuery-UI的第三个实例。

如果您删除了第二个和第三个包含,您的代码就可以工作了,正如您可以看到的,如果您展开并运行这个代码片段:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>date</title>
    <!-- Fonts -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" integrity="sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" crossorigin="anonymous">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700">
    <!-- Styles -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
    
</head>
<body id="app-layout"  class="fuelux">
    <nav class="navbar navbar-default navbar-static-top">
        <div class="container">
            <div class="navbar-header">
                <!-- Collapsed Hamburger -->
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                    <span class="sr-only">Toggle Navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <!-- Branding Image -->
            </div>
            <div class="collapse navbar-collapse" id="app-navbar-collapse">
                <!-- Left Side Of Navbar -->
                <ul class="nav navbar-nav">
                    <li><a href="#" class="log" style="color:white">Sisimsha Booking Engine</a></li>
                </ul>             
            </div>
        </div>
    </nav>
<div class="container">
<div class="row">
<div class="col-lg-5 col-sm-5 col-xs-12">
 <div class="form-group{{ $errors->has('date') ? ' has-error' : '' }}">
    <label for="Event Date">Event Date</label>
    <input name="date" type="text" class="form-control" id='datepicker'  placeholder="Date" 
 </div>  
</div>
</div>
<div class="row">
<div class="col-lg-12 col-sm-12 col-xs-12">
<a href="coupleDetails" class="btn btn-primary"> Back </a>
<input type="submit" class="btn btn-primary pull-right" value="Next">
</div>
</div>
    </form>
  </div>
</div>
</div>
</div>
    <!-- JavaScripts -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js" integrity="sha384-I6F5OKECLVtK/BL+8iSLDEHowSAfUo76ZL9+kGAgTRdiByINKJaqTPH/QVNS1VDb" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 <script>
  $(function() {
    $( "#datepicker" ).datepicker().datepicker( "option", "dateFormat", 'yy-mm-dd');
  });
  </script>
</body>
</html>

你加载jQuery不是一次,而是三次jQuery UI在第二个实例之后加载,但在第三个实例之前加载,因此它附加到第二个实例。然而,由于第三个实例是最后加载的,它的$变量,没有附加jQuery UI,遮蔽了其他的,所以你不能使用jQuery UI。

解决方案很简单:只需删除两个jQuery版本,您的代码应该可以正常工作!

(你还包括Bootstrap 两次;您需要更加小心不要将脚本和样式表包含超过一次,因为它们可能以意想不到的方式相互干扰。

请使用此运行代码。我希望这对你有帮助。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery('#datetimepicker').datepicker();
    })
</script>
<input id="datetimepicker" type="text">