jQuery DatePicker与包含文件中的DatePicker冲突



我有两个php页面,search.php和result.php。这两个页面都使用jQuery,都有jQueryUI日期选择器,彼此完全独立工作。

我把search.php包含在我的result.php文件中,因为我想把它用作侧边栏,现在我似乎有某种冲突,因为search.php中的日期选择器已经停止工作,日历没有显示,因此无法使用。jQuery在这两个文件中都工作,我已经通过打印到屏幕来确认这一点。此外,如果我从result.php中删除了日期选择器初始化代码(在页面中留下了我的其他jQuery代码),那么search.php中的其他日期选择器将重新开始工作。ID是唯一的,我使用noConflict来确保jQuery可以在两个页面上工作,正如我所说,它确实可以工作——唯一的问题是,当我在result.php上初始化日期选择器时,它会导致search.php中的日期选择器停止工作。

使用IE的JS调试器,我可以看到result.php中的日期选择器首先被初始化,然后其他的被初始化。没有脚本错误或警告,所以我不知道还能去哪里!感谢您的帮助。

更新我已经去掉了所有不相关的代码,所以我可以在这里上传。有两个文件,testSearch.php和testResult.php。testResult.php包括test.search.php,因为它将显示为侧边栏。这两个脚本都是独立工作的,但一旦两者都启用,testSearch.php中的日期选择器就会停止工作。

testResult.php

<!DOCTYPE html>
<html>
<head>
 <!-- jQuery -->
 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
 <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
</head>
<body>
 <div id="sidebar"><?php include 'testSearch.php';?></div>
 <div id="content">
  <div id="availCal"></div>
 </div>
 <script>
  var jResult = jQuery.noConflict(true);
  jResult(document).ready(function() {
   jResult( "#availCal" ).datepicker({
    changeMonth: false,
    changeYear: false,
    firstDay: 1,
    numberOfMonths: 3,
    dateFormat: "dd-mm-yy",
    showCurrentAtPos:1
   });
  });
 </script>
</body>

testSearch.php

<!-- include jquery and jquery ui -->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
<label for="arrPicker">Arrival date:</label><br />
<input class="dateSelect" type="text" id="arrPicker" name="arr" value="<?php echo $arr; ?>" readonly />
<script>
 var jSearch = jQuery.noConflict(true);
 jSearch(document).ready(function() {
  jSearch('.dateSelect').each(function(){
   jSearch(this).datepicker({
    changeMonth: true,
    changeYear: true,
    firstDay: 1,
    constrainInput: true,
    dateFormat: "dd-mm-yy",
    minDate: 1,
    showAnim: "slideDown"
   });
  });
 });
</script>

作为助手,我在将包含的文件(testSearch.php)中省略doctype/head/body标记是否正确?我认为它们是不必要的,因为testResult.php已经有了这些标签,testSearch.php将被注入其中。

尝试使用

jQuery(function($){ 
    $('body').on('focus',"#yourTagId", function(){ $(document).ready(function() {
        $('#yourTagId').datepicker({ dateFormat: 'dd-mm-yy' });});
    });
});

最新更新