【问题标题】:How to call function after two click?两次点击后如何调用函数?
【发布时间】:2017-03-23 18:04:27
【问题描述】:

我为 from date 和 to date 创建了两个 datepicker 输入。

例如:

<input class="datepicker form-control" id="fromDate">
<input class="datepicker form-control" id="toDate">

还有日期选择器:

<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-front">
...
</div>

用户点击#toDate后点击#ui-datepicker-div我想调用这个函数:

$('.icon-disable-date').hide();

我的 jQuery 代码是:

$('#toDate').on('click', function () {
    $('#ui-datepicker-div').on('click', function () {
        $('.icon-disable-date').hide();
    });
});

但是这段代码对我不起作用。

【问题讨论】:

  • 你真正想要的是当两个输入都有一个值时,隐藏 div。
  • 嗨@KevinB,我需要在单击#ui-datepicker-div 后#toDate 调用此函数。 $('.icon-disable-date').hide();
  • 我想你不知道你需要什么。
  • @KevinB ,对不起,我的英语说得不好。在id="toDate" 中选择日期后我需要调用函数。
  • 将更改事件应用于监视两个输入值的两个输入会相对容易,因此在更改时,如果两个输入都有值,则隐藏所述图标。不需要奇怪的点击事件。

标签: javascript jquery jquery-ui jquery-ui-datepicker


【解决方案1】:

正如@KevinB 在 cmets 中所讨论的,如果您希望图标在两个日期都被选中时消失,您可以使用输入上的更改事件更轻松地做到这一点:

$('.datepicker').datepicker();
$('.datepicker').change(function() {
    if ($('#fromDate').val() != "" && $('#toDate').val() != "") {
        $('.icon-disable-date').hide();
    }
});

无论顺序如何,即使用户键入日期而不是选择日期,这也有效。

JSFiddle:http://jsfiddle.net/tycugh4t/

您也可以使用 datepicker onChange 事件来执行此操作,但它不会捕获用户在输入字段中键入的情况:

$('.datepicker').datepicker({
  onSelect: function() {
    if ($('#fromDate').val() != "" && $('#toDate').val() != "") {
      $('.icon-disable-date').hide();
    }
  }
});

【讨论】:

  • 嗨,谢谢你的帮助。您在 JSFiddle 中的代码是正确的,但我的项目中的这段代码不起作用!!!为什么?
  • 我删除了$('.datepicker').datepicker(); :-) 谢谢
【解决方案2】:

如果您的目标是支持 HTML5 的浏览器,这可以通过 Promises 完成。或者你可以为不支持的浏览器添加 Promises Polyfill。

  var p1 = new Promise(function(resolve, reject){
      $('#toDate').on('click', function () {   
           resolve(true)
      })
  }).then(function(result){
    new Promise(function(resolve, reject){
       if(result) {
          $('#ui-datepicker-div').onSelect(function(){
            resolve(true)
          })
       }else {
         reject();
       }
    })
  }).then(function(result){
     if(result){
        $('.icon-disable-date').hide();
     }
  });

【讨论】:

  • 嗨,谢谢你的帮助,这个代码很好,但是在选择日期后,这个代码$('#ui-datepicker-div').on('click', function () {不起作用!!!此代码仅适用于单击#ui-datepicker-div!不适用于选择日期!!!!
  • 在 id="toDate" 中选择日期后我需要调用函数
  • 谢谢,但是$('#ui-datepicker-div').on('click', function () { 在选择日期后就不行了!!!!!!!!!!!!!!!此代码适用于不选择日期的点击!!!!!! :-(
  • 好的,datepicker 的日期函数不是click 事件。更新代码。很抱歉造成误解。
  • :-(((((($('#ui-datepicker-div').on('click', function () {不适用于点击和选择日期:-(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多