【问题标题】:Datepicker click event not firing日期选择器单击事件未触发
【发布时间】:2017-06-22 05:18:46
【问题描述】:

一个我无法回答的快速问题。

我们有一个简单的 Datepicker (jQuery UI),在 td 上有一个 click 事件,仅此而已。但无论我尝试什么,点击事件都不会触发。

示例: https://jsfiddle.net/s63y1w6h/

点击事件延迟,因为每次点击 td 时 html 都会发生变化,但同样的“没有”再次发生。

至于为什么我需要点击a,我需要td的数据属性,文本和它的偏移量,这在onSelectmethod中将更难获得。

知道如何触发点击事件吗?

【问题讨论】:

  • 只要查看 jQuery-ui 库,你可以在其中看到if ( handled ) { event.preventDefault(); event.stopPropagation(); } 这可以防止默认操作和事件冒泡......
  • 我以为会是这样,谢谢你的信息,
  • 我有一些空闲时间,所以决定试一试(遗憾的是onSelect 方法由于@PranavCBalan cmets)jsfiddle.net/5qwgoxyL
  • 谢谢@KaushalNiraula。但我可能会使用mousedown 事件以减少意大利面条代码,但它仍然是一个不错的解决方案。
  • @KaushalNiraula 我回退到您的解决方案,因为 mousedown 事件破坏了其他代码逻辑。如果您将其添加为单独的答案,我将接受它。 :) 10 倍。

标签: jquery jquery-ui datepicker


【解决方案1】:

您仍然可以使用onSelect 在点击一天时触发您的逻辑

$('.datepicker').datepicker({
  onSelect:function(dt,obj){
    var day = parseInt(dt.substring(3,5));
    var td;
    $("td>a").each(function(index,elm){
     if(parseInt($(elm).html()) === day){
       td = $(elm).parent();
       return;
      }
    })
    console.log(td)
    alert("You're welcome!!!")
  }
});

根据所选日期编写了一些 hack 逻辑以获取 td

工作plnkr

【讨论】:

    【解决方案2】:

    试着把你的代码放进去

    $(document).ready(function(){
        //Your code here
    });
    

    JSFiddle:https://jsfiddle.net/s63y1w6h/1/

    编辑: 试着把你的代码放进去

    $(document).ready(function(){
        $('.datepicker').datepicker({
            onSelect: function(){
                //your code here
            }  
        });
    });
    

    https://jsfiddle.net/s63y1w6h/2

    【讨论】:

    • 一旦您单击td 或更改月份,这将不起作用(因为默认情况下会删除并再次添加 html)。您必须延迟您的活动。
    • @drip 在这种情况下你可以使用onSelect from datepicker 选项。 jsfiddle.net/s63y1w6h/2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多