- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
jQuery UI 日期选择器可以是内联的或弹出式的,具体取决于调用它们的元素类型。 <input>
使它们弹出并<div>
或 <span>
使它们内联。
我需要一种方法在不破坏事件监听器和其他已耦合到元素的东西的情况下将它们从弹出窗口切换到内联窗口并返回。
作为起点:this fiddle is close to my actual environment.需要更改的代码:
var toggle = function(){
//toggle #StartDate's inline-ness without clobbering it
};
$node.on('click','#toggle',toggle);
如您所见,日期选择器通过日期对脚本附加到时间选择器和彼此。因此,当它们切换时简单地重新实例化它们是不可取的。
我只是更改的 CSS 解决方案 #StartDate
的类(class)会很理想,但我怀疑这是否可能。
编辑:我要实现的目标的照片描述:
我需要切换按钮来在以下各项之间切换:
内联模式:
弹出模式:
注意其中一个始终展开,而另一个在单击时弹出。目前,在我的 fiddle 中,这将是开始日期和结束日期日期选择器之间的区别。
最佳答案
我能够模拟我想要的:http://jsfiddle.net/slicedtoad/hzg2ec30/9/
/////////////////////
// Makes a datepicker toggleable between inline and an emulated popup mode.
// Returns: function that toggles the datepicker.
// Params:
// - id of the container
// - options.datepicker and options.altfield (class names)
// ^ defaults are .picker and .altfield
var makeToggleable = function (container, options){
options = typeof options !== 'undefined' ? options :
{datepicker:".picker",altfield:".altfield"};
var picker = options.datepicker;
var altfield = options.altfield;
var container = container; //in case selector refresh is needed
var $node = $(container).addClass("datepicker-toggleable");
var inline = false;
var open = false;
var bindOneOutsideMousedown = function(){
// binds one mousedown, rebinds if click was on the picker or altfield
$(document).one('mousedown',function closeOrBindAgain(e){
if (inline) {return;}
var $picker = $node.find(picker);
if (!$picker.is($(e.target)) // if the target of the click isn't the picker
&& !$(e.target).parents(picker).length // nor a descendant of the picker
&& !$node.find(altfield).is($(e.target))) { // nor the altfield
open = false;
$picker.addClass('invisible');
}else{
bindOneOutsideMousedown();
}
});
}
var onAltFieldMousedown = function () { //open picker on altfield click
if (open||inline) {return;}
open = true;
var $picker = $node.find(picker);
$picker.removeClass("invisible");
$picker.position({ //move it below the altfield
my: "left top",
at: "left bottom",
of: $node.find(altfield),
offset: "0 0",
collision: "none"
});
$picker.datepicker('option', 'onSelect',function (e) { //close on date select
$(this).trigger( 'change' );
$picker.datepicker('option', 'onSelect', null); // turn off select listener
if(!inline){
$picker.addClass("invisible");
open = false;
}
});
bindOneOutsideMousedown();
};
var toggle = function () {
inline = !inline;
if (inline) { //inline mode
$node.addClass("inline").removeClass("popup");
$node.find(picker).removeClass("invisible");
$node.find(altfield).addClass("invisible");
} else { //popup mode
open = false;
$node.removeClass("inline").addClass("popup");
$node.find(picker).addClass("invisible");
$node.find(altfield).removeClass("invisible")
.on('mousedown', onAltFieldMousedown);
}
};
return toggle;
};
用法:
$("#StartDate .picker").datepicker({
altField: ".altfield"
});
var toggleStart = makeToggleable("#StartDate",{altfield:".altfield",datepicker:".picker"}); //makes #StartDate toggleable and returns the function to toggle it
$("#toggle").click('click', toggleStart);
$("#toggle").trigger('click');
基本上,它始终是内联的,但在“弹出模式”下假装是弹出窗口。要完全像 datepicker 的弹出模式,它需要一些动画 opacity
而不是设置为 display:none
。可能还有一些其他细节。
这里它在同一个容器中使用两个日期选择器和大量耦合:http://jsfiddle.net/slicedtoad/Lf71gjcc/3/
关于javascript - 切换内联模式 - jQuery UI datepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773146/
我正在尝试使用 720Kb 日期选择器。 https://github.com/720kb/angular-datepicker 使用简单示例时: 我收到打击错误: angular.js:1
我开始使用react-datepicker组件。 https://github.com/Hacker0x01/react-datepicker 我运行了该示例,现在我想对其进行调整,使其没有初始值。示
我正在使用 Angular-ui 日期选择器,除了日期选择器的初始状态外,一切实际上都工作正常。我选择日期后,看起来不错。见下文: 初始状态 在选择器中选择日期后 所以,显然我在第一种情况下得到了日期
我需要为回历日期设置日期选择器。我可以使用 jquery datepicker 或 bootstrap datepicker。但是我写了这段代码
在选择范围时,我遇到了 jquery UI datepicker 的一个奇怪问题。在提出问题之前,我正在研究许多其他人编写的代码。他们以优化的顺序包含了 jquery 工具和 UI,因此所有功能都可以
我有两个剑道 DatePickers 来选择工作的开始和结束日期。作业由多个任务组成,其中包含自己的完成日期(任务在网格中列出,每条记录使用 kendo DatePicker 选择完成日期) 当用户设
我想将功能添加到 Material 日期选择器,以便能够选择周.. 因此,当我从一行中选择一个日期时,我希望它输出从一周开始到一周结束的日期范围。 我之前在常规 jquery 日历上这样做过--检查照
在 SwiftUI 中使用新的 (iOS 14) DatePicker,它按预期工作并且在模拟器和设备上看起来很好,但是一旦日历弹出,我会在输出窗口中收到几行警告。这有点烦人! 虽然日志贴在下面,但看
我将如何创建 doctrine_orm_datetime_range使用 jQuery UI 日期选择器的 Sonata Admin Bundle 中的过滤器? 我尝试了以下方法,但不起作用: pro
有人知道如何设置 gem bootstrap-datepicker-rails 吗?我按照 http://rubydoc.info/gems/bootstrap-datepicker-rails/0.
在 kartik DatePicker Yii2 中有没有办法 - 我可以禁用大于当前日期的日期? 例如:如果今天是 2016 年 3 月 14 日,则应禁用 2016 年 3 月 15 日的日历日期
在 UIDatePicker 我们可以做这样的事情 datePicker.timeZone = TimeZone(secondsFromGMT: 5*60*60) 为了指定日期选择器的时区。 但是如何
我在 FullCalendar ( http://www.eyecon.ro/datepicker/ ) 页面正下方添加了一个 datePicker ( http://fullcalendar.io
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在Angular 6中搜索Datepicker,它可以显示基于回历日历的阿拉伯日期。 似乎找不到一个。是否有可用的东西,或者我们需要从头开始构建它。 最佳答案 Ng bootstrap或angul
JavaFX8 中是否有一种方法可以从 Java 代码中选择 DatePicker 中的日期(作为文本)?我想以这样一种方式激活带有 DatePicker 的控件,用户可以在不使用鼠标的情况下编辑日期
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在尝试验证datepicker,因为startDate应始终小于EndDate。如果我手动更改日期,则 StartDate 有效,但 EndDate 无效。 我的JavaScript代码: $(d
我是 jquery 和 javascript 的菜鸟。因此,虽然我看过很多解决我的问题的 SO 帖子,但我无法将各种解决方案“组装”成适合我的东西。 我的上下文:查询结果显示在表单中。在每一行中,其中
我正在开发 Windows Phone 8.1 应用程序。我正在尝试使用 DatePickerFlyout 但没有取得适当的成功。我正在选择日期并尝试用选定的日期设置按钮内容,但它没有设置。当我调试以
我是一名优秀的程序员,十分优秀!