【问题标题】:Multiple Calendars Displayed or Value Selected not displaying correctly显示的多个日历或选择的值未正确显示
【发布时间】:2011-02-15 15:23:57
【问题描述】:

好的,我正在使用jQuery Mobile Framework 并添加Experimental Date Picker,但我遇到了两个结果。按照页面上的说明,这就是我目前所拥有的。

代码工作 #1:

$(document).ready(function() {        
    $('.hasDatepicker').hide();

    $('#date-of-birth').each(function() {     
        $(this).focus(function() {
            $(this).next().show('fast');
        });

        $(this).blur(function() {               
           $(this).next().hide('fast');
        });
    });
});

现在这显示了一个日历(如我所愿),但在选择日期时,日期保持不变(今天的日期)而不是选择的日期。

代码工作 #2:

$(function() {
    $('.hasDatepicker').hide();

    $('#date-of-birth').focus(function() {
        $('.hasDatepicker').show('fast');
    });

    $('#date-of-birth').blur(function() {
        $('.hasDatepicker').hide('fast');
    });
});

现在这显示了多个日历(确切地说是 5 个)堆叠在一起,并且如果我选择它按预期工作的日期。但我只想显示一个日历。

我想将这两种代码工作结合起来以获得所需的结果,但似乎没有任何效果。

这里是 HTML

<div data-role="fieldcontain">
    <label for="date-of-birth">Date of Birth</label>
    <input type="date" name="date-of-birth" id="date-of-birth" />                
</div>

type="date" 是您调用日期选择器的方式

有什么建议吗?

其他可能会有所启发的堆栈链接

更新:

这可能是问题,但仍未找到解决方案。

我使用 jQueryMobile 的 Multi-page layout 选项,对于每个页面,它都会创建一个额外的日期选择器,但它会显示它们彼此堆叠并且功能无法正常工作

【问题讨论】:

  • $('#date-of-birth').each() 的意义何在? ID 应该是唯一的。您是否将所有 5 个日历链接到具有相同 ID 的字段?当您有重复的 ID 时,不能期望 $('#something') 返回多个元素。此外 - 如果您复制 ID,所有表单增强功能都无法正常工作。我已经在 SO 上看到过一次。
  • 日历重复的行为很奇怪,我只有一个用于日期选择器的字段。如果我只是将代码放在一个函数中,我仍然会得到 dups,如果我使用 each() 我会得到一个?
  • 看来我们并不了解对方。 1 当您删除所有 javascript 时,有多少个日期选择器? 2 检查萤火虫,看看您是否确实有多个输入具有该 ID $('input').each(function(){console.log($(this).attr('id'))})
  • 我在页面上有一个具有该 ID 的元素和一个日期选择器,示例 HTMl 是唯一一种在移动框架中调用日期选择器的 type="date"。如果我删除 javascript,我会得到五个相互堆叠的日历,但日期选择功能有效。如果我添加 javascript,我会得到一个日历,但日期选择功能不起作用

标签: jquery mobile datepicker jquery-mobile jquery-ui-datepicker


【解决方案1】:

我让它工作了。我问了这个问题:jQuery Mobile -> Override jQuery UI Datepicker -> Layout broken

这是实验性的,但它有效。你不应该使用这个

$('.hasDatepicker').show('fast');

您应该为一个站点上的每个日期选择器添加一个唯一的id,然后写:

$('#uniqueId').show('fast');

我在日期选择器的 JavaScript 文件中添加 ID。

【讨论】:

猜你喜欢
  • 2012-11-05
  • 2014-12-20
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
相关资源
最近更新 更多