【问题标题】:How to use datepicker when page load页面加载时如何使用日期选择器
【发布时间】:2015-12-29 07:56:16
【问题描述】:

我有一个使用loadpreventDefault 的jquery 函数。以下是我的main.php 页面中的代码,

<script>
$(document).ready(function() {
  function ajaxLoad(e) {        
    e.preventDefault();
    var page = $(this).attr('href');
    $('#content').load(page, function(){
        $("#datepicker").datepicker();
    });      
  $(document).on("click", "a#staff_insert, ajaxLoad);
});
</script>

在我加载的页面staff-add.php 上,我有一个使用日期选择器输入日期的表单,

<input type="text" name="calendar" id="datepicker">

我可以知道如何使日期选择器功能可用,因为当我单击input 字段时,日历不会出现。我是否必须在staff-add.php 上插入日期选择器功能,就像,

$(document).ready(function(){
  $("#datepicker").datepicker();
});

感谢您的帮助。

使用新代码更新。
只是为了通知我设法完成了它,但现在的问题是,

当我点击不同的链接,然后点击返回到有 datepicker,datepicker 不会出现。只有当我出现时它才会出现 没有去其他链接。我可以知道我做错了什么吗?

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<script>
$(document).ready(function() {
  function ajaxLoad(e) {        
    e.preventDefault();
    if($(this).attr('id') == 'staff_insert'){
      var page = $(this).attr('href');
      $('#content').load(page+ ' #calendar', function(){
        $("#datepicker").datepicker();
      }); 
    } else {
       var page = $(this).attr('href');
       $('#content').load(page);
    }  
}
$(document).on("click", "a#staff_info, a#staff_insert", ajaxLoad);
});
</script>

如果我在浏览器上看到,错误是Uncaught TypeError: $(...).datepicker is not a function

更新 - 已解决

我可以通过在代码上插入var j = jQuery.noConflict(); 来解决它。有人可以解释我为什么需要那个吗?仍在寻找原因。谢谢

【问题讨论】:

  • 你确定你没有多个#datepicker元素?
  • 我敢打赌(除了来自@void 的评论)你必须在 AJAX 调用之后重新初始化 datepicker。
  • 文档就绪函数只触发一次....如果您通过 ajax 加载 html,它将不会再次触发文档就绪函数...
  • 有没有其他方法或者最好的方法呢?
  • 你确定你包含了 jquery ui 文件吗?

标签: jquery jquery-ui datepicker


【解决方案1】:

由于您是在本地开发,我认为您正在使用文件协议(如 file://)。

目前您正在引用您的脚本/css 包含没有协议:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

在这种情况下使用的是相对URI,基本上它允许浏览器根据您的页面使用的协议来确定是使用http://还是https://。

您正在使用文件协议,因此页面尝试加载:

<link rel="stylesheet" href="file://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="file://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

它不起作用,所以将协议设置为:

<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

【讨论】:

  • 感谢您的帮助。我试图更改协议,但它仍然给出相同的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多