Twitter bootstrap 无法阻止引导下拉列表在Meteor 0.8中使用日期选择器隐藏
我的目标是让引导日期选择器内嵌在引导下拉列表中。我发现这是我想要做的最巧妙的用户体验 在升级到0.8之前,我让它工作得很好,但是现在只要选择了日期,下拉列表就会隐藏。我不想让它隐藏,因为我在下拉列表中有一个按钮来保存日期选择。除此之外,现在我无法在单击时向控制台写入任何内容。我试着在我能想到的日期选择器的各个方面设置点击事件。如果您单击月份箭头或日期周围的某个位置,而不是日期本身,则会触发下面的“单击”测试 任何帮助都将不胜感激。我有一种不健康的困扰 这是我的工作成果 HTML 模板渲染Twitter bootstrap 无法阻止引导下拉列表在Meteor 0.8中使用日期选择器隐藏,twitter-bootstrap,datepicker,meteor,bootstrap-datepicker,meteor-blaze,Twitter Bootstrap,Datepicker,Meteor,Bootstrap Datepicker,Meteor Blaze,我的目标是让引导日期选择器内嵌在引导下拉列表中。我发现这是我想要做的最巧妙的用户体验 在升级到0.8之前,我让它工作得很好,但是现在只要选择了日期,下拉列表就会隐藏。我不想让它隐藏,因为我在下拉列表中有一个按钮来保存日期选择。除此之外,现在我无法在单击时向控制台写入任何内容。我试着在我能想到的日期选择器的各个方面设置点击事件。如果您单击月份箭头或日期周围的某个位置,而不是日期本身,则会触发下面的“单击”测试 任何帮助都将不胜感激。我有一种不健康的困扰 这是我的工作成果 HTML 模板渲染 我没有
我没有一个完整的答案给你,但因为已经两天了,我想有些帮助可能比没有好 我发现datepicker响应了更改事件:
'change #my-datepicker': function(e){
e.stopPropagation();
console.log('clicked');
}
我确实有同样的问题,家长下拉消失,我无法得到修复。也许考虑使用
它有一个比标准下拉菜单更丰富的API,包括show和hide方法
希望有帮助 这是我目前的解决办法。这是可行的,但并不完美 我最后点击了下拉隐藏事件,并像这样阻止了默认设置:
$('.schedule-dropdown').on('hide.bs.dropdown', function (e) {
e.preventDefault();
})
成功地阻止了下拉列表的消失,但现在的问题是它从未消失。因此,我只是简单地退出并添加了一个取消按钮,并将其与提交按钮链接,以手动关闭它,如下所示:
$('.schedule-dropdown').removeClass('open');
所以这是我现在最好的了。如果用户点击屏幕上的其他任何地方就可以关闭它,这将是一件很好的事情,但目前还不是很关键
编辑
如果用户单击其他任何位置,这里还有一个进一步的解决方法,可以将其关闭:
$('.schedule-dropdown').on('hide.bs.dropdown', function (e,t) {
e.preventDefault();
}).on('show.bs.dropdown', function (e,t) {
var ct = e.currentTarget;
$('body').click(function(e) {
var clicked = e.target;
if($(clicked).hasClass('day')||$(clicked).hasClass('month')||$(clicked).hasClass('year')){
//do nothing, they selected a date element
} else {
console.log('remove day');
$(ct).removeClass("open");
$('body').off('click');
}
})
})
谢谢@Jay,谢谢你的支持。我已经想出了一个工作周围张贴在下面的时间。引导选择看起来很有趣。
$('.schedule-dropdown').on('hide.bs.dropdown', function (e) {
e.preventDefault();
})
$('.schedule-dropdown').removeClass('open');
$('.schedule-dropdown').on('hide.bs.dropdown', function (e,t) {
e.preventDefault();
}).on('show.bs.dropdown', function (e,t) {
var ct = e.currentTarget;
$('body').click(function(e) {
var clicked = e.target;
if($(clicked).hasClass('day')||$(clicked).hasClass('month')||$(clicked).hasClass('year')){
//do nothing, they selected a date element
} else {
console.log('remove day');
$(ct).removeClass("open");
$('body').off('click');
}
})
})