Javascript 打开日期选择器的超链接

Javascript 打开日期选择器的超链接,javascript,jquery,html,datepicker,Javascript,Jquery,Html,Datepicker,有没有办法将超链接/标记更改为日期选择器?我不希望整个日期字段,因为它将工作,因为他们点击一个日期,它会进入页面的某一部分(在那里与该日期的文章位于) 我试过这个: <li class="calendar"><a href="#"><span>Calendar</span></a></li> 但它不起作用 日期选择器绑定到标准表单输入字段。关注 输入(单击或使用tab键)以在中打开交互式日历 小覆盖层。选择日期,单击页面上

有没有办法将超链接/
标记更改为日期选择器?我不希望整个日期字段,因为它将工作,因为他们点击一个日期,它会进入页面的某一部分(在那里与该日期的文章位于)

我试过这个:

<li class="calendar"><a href="#"><span>Calendar</span></a></li>
但它不起作用

日期选择器绑定到标准表单输入字段。关注 输入(单击或使用tab键)以在中打开交互式日历 小覆盖层。选择日期,单击页面上的其他位置(模糊 输入),或按Esc键关闭。如果选择了一个日期,则会收到反馈 显示为输入的值

在web上阅读时,您可以看到datepicker只能绑定到输入字段

日期选择器绑定到标准表单输入字段。关注 输入(单击或使用tab键)以在中打开交互式日历 小覆盖层。选择日期,单击页面上的其他位置(模糊 输入),或按Esc键关闭。如果选择了一个日期,则会收到反馈 显示为输入的值

在网上阅读时,你可以看到日期选择器只能绑定到一个输入字段

你可以这样做

html:

<li class="calendar"><a href="#"><span>Calendar</span></a></li>
<div id="datepicker" class=hidden></div>
css:

你可以这样做

html:

<li class="calendar"><a href="#"><span>Calendar</span></a></li>
<div id="datepicker" class=hidden></div>
css:


您可以将日期选择器附加到隐藏的输入

HTML:


您可以将日期选择器附加到隐藏的输入

HTML:


要实现您的功能,您可以遵循以下语句:

  • 坚持使用某些日期格式(例如,2014-01-20
  • 对具有指定格式的隐藏字段使用
    datepicker
    (使其 如2014-01-20您应提供以下
    “yy-mm-dd”
    ):

    $(“#inputDate”).datepicker({
    日期格式:“年月日”/*..*/}

  • 标记您想要的html元素(“页面的某些部分”) 可按日期访问,带有
    数据日期=“yyyy-mm-dd”
    (您需要的实际日期)。 还为这些元素提供一些
    class
    ,以识别它们(我有 使用
    “post”
    ):

  • 为日期选择器提供
    onSelect
    处理程序。在其中,您可以 访问所选日期。查找标记为的元素
    “数据日期=所选值”
    并对其执行任何操作 元素(例如,滚动到它并用一些
    class
    标记):


  • 完整的演示是。要实现您的功能,您可以按照以下语句进行操作:

  • 坚持使用某些日期格式(例如,2014-01-20
  • 对具有指定格式的隐藏字段使用
    datepicker
    (使其 如2014-01-20您应提供以下
    “yy-mm-dd”
    ):

    $(“#inputDate”).datepicker({
    日期格式:“年月日”/*..*/}

  • 标记您想要的html元素(“页面的某些部分”) 可按日期访问,带有
    数据日期=“yyyy-mm-dd”
    (您需要的实际日期)。 还为这些元素提供一些
    class
    ,以识别它们(我有 使用
    “post”
    ):

  • 为日期选择器提供
    onSelect
    处理程序。在其中,您可以 访问所选日期。查找标记为的元素
    “数据日期=所选值”
    并对其执行任何操作 元素(例如,滚动到它并用一些
    class
    标记):



  • 完整的演示是。首先尝试$('.calendar').datepicker();而不是。我觉得这里有很多错误。这也不起作用,但正如您所说的,要按类匹配选择器,您需要在“.”之前加上前缀。如果您的“e”匹配Id,则需要在“#”之前加上“#”等。首先尝试$('.calendar').datepicker();相反。我觉得这里出错的地方更多。这也不起作用,但正如您所说的,要按类匹配选择器,您需要在“.”之前加上前缀。如果您的“匹配Id”,则需要在“#”之前加上“#”等等。这是错误的…你也可以把它和一个div联系起来…使用我的提琴/答案!谢谢你的更正!我认为他们可以更改他们网站上的信息:d这是错误的…你也可以将它与一个div联系起来…使用我的提琴/答案!谢谢你的更正!我认为他们可以更改他们网站上的信息:d这非常适合让日期选择器显示,但我得到了以下错误:
    uncaughttypeerror:无法读取未定义的属性“top”
    如果没有标记选定日期的帖子,就会发生这种情况。我已编辑了我的答案和演示。只有2014-01-20、2014-01-21和2014-01-22日期会导致滚动和选择
    div
    。添加more
    div
    s具有不同的
    数据日期
    属性如果您不需要,我会一直收到此错误-
    TypeError:“undefined”不是对象(评估“matchedPost.offset().top”)
    无论日期或格式如何,您是否正在使用我的演示?是的,我是,确切的代码。但当我在localhost中尝试时,它会给我错误这对于让日期选择器显示非常有效,但我得到了以下错误:
    未捕获类型错误:无法读取未定义的属性“top”
    如果没有任何帖子出现,则会发生这种情况选择日期。我已经编辑了我的答案和演示。只有2014-01-20、2014-01-21和2014-01-22日期会导致滚动和选择
    div
    。使用不同的
    数据日期属性添加更多
    div
    如果您需要,我会一直收到此错误-
    类型错误:“未定义”不是对象(正在计算'matchedPost.offset().top')
    无论日期或格式如何,您是否正在使用我的演示?是的,我使用的是确切的代码。但当我在localhost中尝试时,它给出了一个错误这对我有效,尽管我在隐藏输入中添加了
    disabled
    属性。这对我有效,尽管我在隐藏输入中添加了
    disabled
    属性。
    $("#datepicker").datepicker();
    $(".calendar a").click(function(){
       $("#datepicker").toggle();
    });
    
    .hidden{
       display: none; 
    }
    
    <a href="#" id="open">Open</a><br />
    <input type="hidden" id="date" />
    
    $('#date').datepicker({
        onSelect: function() {
            var date = $('#date').val();
            // Do something with the value here.
        }
    });
    $('#open').click(function(e) {
        e.preventDefault();
        $('#date').datepicker('show');
    });
    
    <div class="post" data-date="2014-01-20">Posted on 2014-01-20</div>
    <div class="post" data-date="2014-01-21">Posted on 2014-01-21</div>
    <div class="post" data-date="2014-01-22">Posted on 2014-01-22</div>
    
    $(document).on("click", "#openDatepicker", function (e) {
        $("#inputDate").datepicker("show");
        return false;
    });
    
    $("#inputDate").datepicker({
        /*...*/
        onSelect: function () {
            //get selected date
            var date = $('#inputDate').val();
    
            //find all "posts"
            var posts = $(".post");
    
            //unmark all "posts"
            posts.removeClass("selected");
    
            var matchedPost = posts.filter("[data-date='" + date + "']");
    
            if(matchedPost.length > 0) {
               //mark matched post
               matchedPost.addClass("selected");
    
               //and scroll to it
               $("body").animate({scrollTop: matchedPost.offset().top}, 800);
            } else {
               alert("Nothing on this date");
            }
    });