【问题标题】:Clean overwrite of private variable inside of closure (?) function在闭包(?)函数内清除私有变量的覆盖
【发布时间】:2014-06-22 11:02:55
【问题描述】:

所以我不能让它在小提琴中工作(因为所有者似乎不允许对他的库进行外部引用),所以我担心我必须坚持使用 prosa 和一些 sn-ps。基本上我想用the anytime plugin for time selection,看起来像这样:

library source code is here

好消息是,按分钟准确,这是一个要求。不过,它确实破坏了标签行为。如果您使用选项卡,您将使用选项卡进入时间选择器。在我能想到的所有情况下,99% 的情况都是不需要的。我打破了它,我必须覆盖这个函数:

   var AnyTime = {};

    AnyTime.picker = function(id, option){
  __pickers[id] =
        {
         key: function (event) {
           //apply patch, e.g. if(key === 9){return;}
        }
    }

有没有一种方法可以从外部做到这一点,而不必破坏他的文件?例如当我更新文件时,我不想考虑更新这个函数

我的问题清楚了吗?我想保持他的文件原样,然后从我的一个文件中调用这样的东西(显然不起作用):

var tempKeyFunc =  AnyTime.picker.__pickers[id].key;
AnyTime.picker.__pickers[id].key = function(){
   if(key === 9)
{
   return;
}else{
tempKeyFunc();
}

【问题讨论】:

  • IMO 那个小部件的可用性看起来很糟糕。我只会使用选择下拉菜单或三个输入字段或带屏蔽的输入。
  • @elclanrs - 非常适合触摸(如果它足够大的话)。
  • 它是在手动输入时间的能力之上。有些人喜欢选择器,喜欢移动鼠标。我不是其中之一。
  • 简答:无法从函数外部访问局部变量。
  • 另一种可能是绑定到 $('#anytimeId') keydown 事件并取消它或将焦点移到内联的下一个元素。

标签: javascript jquery jquery-plugins anytime


【解决方案1】:

Tab 进入选择器对于可访问性很重要;这不是破坏制表行为,而是支持它。

很抱歉,您认为插件设计很糟糕。

恕我直言,在可用性方面,真正糟糕的是必须滚动浏览单个数字字段的三个下拉列表,而您可以更快地连续单击三个按钮。

【讨论】:

  • 插件应该是一个选项。我们正在谈论使用鼠标或按下 1305 之类的东西 - 这是 4 个按钮,对吧?得到时间。好吧,如果用户不知道我允许缩短它,那么可能是 13:05。我认为插件很棒,选项卡 - 意味着总是切换到下一个元素,请查看 jquery ui 的 datepicker。如果我想强迫!人们使用插件,那么我将不允许他们使用输入框
  • 我同意插件应该是一个选项,并且用户应该能够以数字方式输入时间。问题是,如果用户键入时间,它必须采用正确的格式。该插件可以防止该问题,但它不是最佳的。理想情况下,该插件将具有更“自然”的键盘支持。它目前旨在支持 ARIA v1 规范中为日期选择器定义的键盘功能,以符合可访问性标准。我正在开发一个新的选择器,它将对键盘输入提供更“自然”的支持,但距离发布还有好几个月。
  • 同时,有一种解决方法可以使选择器成为可选,在ama3.com/anytime/#buttonCreationDemo 中演示...这不是最佳的,但正如我所说,这是一种解决方法。
猜你喜欢
  • 2013-05-07
  • 2020-07-18
  • 2018-07-24
  • 1970-01-01
  • 2018-07-05
  • 2016-10-22
  • 1970-01-01
  • 2010-11-29
  • 2013-03-27
相关资源
最近更新 更多