2015-07-28 46 views
0

與jQuery UI的日期選擇器的行爲我有以下指令的角度應用:奇怪的觸摸/點擊的iOS

'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(); 
      }); 

     } 
    }; 
}]); 

正如你所看到的,既是一個單擊處理程序,該元件上的日期選擇器(在點擊處理程序僅用於調試)。

當我輕輕地觸摸Safari中的元素在任何iOS中,點擊處理程序觸發 - 但日期選擇器不打開。但如果我更加努力一點,日期選擇器確實打開了(這不是長按,因爲長按不會觸發點擊處理程序或打開日期選擇器)。

絕對不知道爲什麼會發生這種情況。有任何想法嗎?

我的項目使用fastclick,它可能會有一個影響。

+0

你的手機壞了?你可以在另一個設備或模擬器上覆制它嗎? – evolutionxbox

+0

在iOS模擬器上,點擊根本不起作用,但是長按(選中輸入框附近的一些文本),然後點擊*做*。奇怪的。 iPhone 4也是如此(原始測試是iphone 5c) –

+0

當您移除fastclick時會發生什麼? – evolutionxbox

回答

1

修正了以下骯髒的黑客,我認爲我可以這樣做,但希望能有更好的解決方案。

  ... 

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

      ... 
0

對於移動和可觸摸的裝置或屏幕的Jquery UI日期選擇器初始化日期選擇器組件,但從來沒有觸發「顯示」的方法。那麼你可以使用這樣的事情:

$(".datepicker").datepicker(); 

$(".datepicker").on("click", function() { 
    $(this).datepicker("show"); 
}); 
+0

沒有用。無法讓它註冊點擊 – Shayne