javascript - iOS 上 jquery ui datepicker 奇怪的触摸/点击行为

标签 javascript jquery ios angularjs datepicker

我有一个带有以下指令的 Angular 应用程序:

'use strict';

/**
 * Simple date picker
 */
angular.module('twicketsApp').directive('twicketsDatePickerSimple', [function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {

            function initDatepicker() {
                element.click(function() {console.log('datepicker clicked');});
                element.datepicker({
                    dateFormat: 'yy-mm-dd',
                    changeMonth: false,
                    changeYear: false,
                    minDate: scope.futureOnly ? 0 : null,
                    maxDate: scope.futureOnly ? 365 : null,
                    onSelect: function (date) {
                        ngModel.$setViewValue(date); // update date value back to the model
                    },
                    beforeShow: function(input, inst) {
                        inst.dpDiv.addClass('simple-date-panel');
                    }
                });
            }

            attrs.$observe('futureOnly', function (value) {
                scope.futureOnly = value === 'true' ? true : false; // attrs come in as a string
                initDatepicker();
            });

        }
    };
}]);

如您所见,此元素上既有点击处理程序又有日期选择器(点击处理程序仅用于调试)。

当我在任何 iOS 中轻轻触摸 safari 中的元素时,点击处理程序会触发 - 但日期选择器不会打开。但如果我用力按压,日期选择器打开(这不是长按,因为长按不会触发点击处理程序或打开日期选择器)。

完全不知道为什么会这样。有什么想法吗?

我的项目使用了 fastclick,这可能会产生影响。

最佳答案

修复了以下肮脏的 hack,认为我可以这样做,但希望有更好的解决方案。

           ...

 function initDatepicker() {
    element.click(function() {element.datepicker( "show" );});
    element.datepicker({

           ...

关于javascript - iOS 上 jquery ui datepicker 奇怪的触摸/点击行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673008/

相关文章:

javascript - 在javascript中使用循环动态检索元素

javascript - jQuery 在点击方面没有按预期表现

iOS - NSTimeZone 的 3 个字母时区缩写

ios - 如何在一个 ViewController 中创建实现多协议(protocol)?

javascript - setTimeout 和回调 - 不允许浏览器渲染刷新的 DOM 元素

javascript - 数组 findIndex() 函数 - 无法读取未定义的属性 'id'

javascript - JSON+Node.js - 意外的 token o

jquery - 如何在侧边栏上制作粘性广告?

javascript - 将数组从 jquery 发送到 ASP.NET 并使用它

ios - Swift UIScrollViewDelegate 不触发 scrollViewDidScroll 事件