jqueryui datepicker禁用带有IE的Ctrl-a

时间:2013-03-29 23:52:27

标签: jquery-ui internet-explorer internet-explorer-8 datepicker

类似于“全选”的问题不适用于twitter bootrap模式和IE',由merv回答。 (非常感谢merv)

问题的提示:http://jsfiddle.net/lesouthern/5ked9/ 简单地调用datepicker:

$('input').datepicker();

在使用datepicker之前,Ctrl-A可以正常工作。

使用IE禁用Ctrl-A和Select all后(使用IE8确认)。

我是否关闭了datepicker的事件,就像使用modal一样?尝试了许多这种组合而没有运气。

谢谢

1 个答案:

答案 0 :(得分:0)

这可能不是一个解决方案,更像是一个黑客......但是,嘿,我正在使用IE8 ..

这是我写的angularjs指令解决了这个问题。

我的日期选择器处于模态对话框中,并且在查看它们时,datepicker是初始化的,当它们关闭时,datepicker被破坏,并且它创建的div被删除。这是我能够在此环境中恢复ctrl-a的唯一方法。

在初始化datepicker之前,在它被销毁之后,Ctrl-A在IE8中工作。这对我来说已经足够了。

<input class="span2 paused-until"
    datepicker-wrapper="{
        maxDate : getMaxDate()
    }"
    ng-change="error=false"
    ng-model="pausedUntil"
    name="Paused Until"
    size="16"
    type="text"
    ui-validate='{validFutureDate : validateDate}'
    ng-pattern="/^(\d{1,2})-(\d{1,2})-(\d{4})$/"
    required />




.directive('datepickerWrapper',function() {
    return {
        restrict : 'A',
        link : function($scope,$element,$attrs) {
            $scope.$watch('modal.model',function(m) {
                var _attrs = $scope.$eval($attrs.datepickerWrapper);
                var maxDate = (typeof _attrs === 'undefined' ||
                        typeof _attrs.maxDate === 'undefined') ? 
                        null : _attrs.maxDate;

                //if the dialog is open, create the datepicker
                if(m) {
                    $element.datepicker({
                        minDate    : '+1d',
                        dateFormat : 'mm-dd-yy',
                        showOn     : 'button',
                        buttonText : '<i class="icon-calendar"></i>',
                        maxDate    : maxDate,
                        onSelect   : function(dateText) {
                            //assign the selection of the
                            //text to the element's model
                            $scope[$attrs.ngModel] = dateText;
                            $scope.$apply();
                        }
                    });
                }
                //else completely remove this element and generated div
                else {
                    $element.datepicker('destroy');
                    $('#ui-datepicker-div').remove();
                }
            });
        }
    }
})