2010-09-11 121 views
5

我使用jQuery Datepicker,我有一个小问题。jQuery Datepicker - 关闭输入点击

如果打开日期选择器,并再次单击输入字段,则不会发生任何事情。 我该如何改变..如果已经打开,输入点击时要关闭的选取器?

在此先感谢...

+0

你如何初始化datepicker? – 2010-09-11 11:11:08

回答

6

,因为它势必focus(默认),你可以绑定自己的.mousedown()处理程序,它不会干扰,这样的:

$("#datepicker").datepicker(); 
$("#datepicker").mousedown(function() { 
    $(this).datepicker("hide");  
}); 

You can give it a try here 。我正在使用mousedown,因为这就是它的近距离行为,所以只要符合更多的面向未来的这种行为。

+0

非常感谢! – Filip 2010-09-11 11:18:23

+0

@Filip - 欢迎:) – 2010-09-11 11:22:32

2

因为我尚未对此发表评论......

一个讨厌的事情是,因为日期选择器使用重点,一旦你隐藏它,你不能再没有第一模糊,然后集中表现出来(所以点击某处否则,然后再次点击)。

我解决了这个通过添加下列尼克Craver的回答(鼠标按下内线):

$(this).blur(); 

因此,它应该是这样的:

$("#datepicker").datepicker(); 
$("#datepicker").mousedown(function() { 
    $(this).datepicker("hide"); 
    $(this).blur(); 
}); 
+0

对我来说,这只是再次打开日期选择器 – mbdev 2011-11-11 02:01:00

17

我发现了一个更好的办法。隐藏似乎导致它不打开进一步的点击。模糊会导致日期选取器稍后打开。

我用拨动:

$('.datepicker').mousedown(function() { 
    $('#ui-datepicker-div').toggle(); 
}); 
0

为了工作更然后一次(尝试点击输入多次),你应该使用:

$("#datepicker").datepicker();  
$("#datepicker").mousedown(function() { 
    var cond = $(this).data('datepicker').dpDiv.is(':visible'); 
    $(this).datepicker(cond ? 'hide' : 'show'); 
}); 
1

这对我的作品(控制台。输出测试日志方法 - 删除生产):

// call addToggleListener function one time to init 
addToggleListener($('.myDatepickerInputs')); 

// the function 
function addToggleListener(elm) 
{ 
    elm.off('mouseup'); 

    elm.on('mouseup', function() 
    { 
     $(this).off('mouseup'); 
     $(this).datepicker("show"); 

     console.log("show"); 

     $(this).on('mouseup', function() 
     { 
      $(this).off('mouseup'); 
      $(this).datepicker("hide"); 
      addToggleListener($(this)); 

      console.log("hide"); 
     }); 
    }); 
} 

使用日期选择器调用函数“onClo se“选项:

onClose: function() 
{ 
    addToggleListener($(this)); 
} 

使用Google Chrome进行测试。

+0

嗨@peterblunt,非常感谢您的回复。它也适用于我,但只能调用onClose函数。我有一个问题,是否有可能做同样的多个日期选择器?我在一页上有两个日期选择器,因为此代码仅适用于第一个。我真的很感激你的回复。 – jupiteror 2016-05-20 12:56:41

+0

应该使用所有启动的日期选择器输入,具有类'myDatepickerInputs'(在本例中)。再次测试 - 说它有效。也许是因为你不使用'onClose'选项来调用'addToggleListener'?问候。 – peterblunt 2016-05-25 12:18:50