gpt4 book ai didi

javascript - Android 设备上的 dojo ValuePickr DatePicker

转载 作者:行者123 更新时间:2023-11-30 02:33:20 25 4
gpt4 key购买 nike

Dojo 移动 DatePicker - dojox.mobile.ValuePickerDatePicker - 行为不正确:
单击年份的加号 (+) 和减号 (-) 按钮会更新日期值,反之亦然。

这只会出现在设备上,在开发过程中不会出现在浏览器中。已在多款安卓设备上重现。这也有些间歇性,因为每次重现的步骤都不完全相同。然而,一旦它开始出错,它就会继续出错......

重现:在日期选择器小部件中,重复随机单击加号 (+) 和减号 (-) 按钮以及可编辑字段。最终,字段将开始错误地更新。 (我希望它更可预测)
从未在我的 PC/MAC 上重现错误。
我怀疑设备上的预测文本有干扰,但我没有证据证明这一点。
您可以使用小部件/日期选择器自行重现错误。使用 Dojo 版本 1.9.4 和 1.10.1 进行测试。日期选择器以声明方式创建:

<div id="dateSelectorDatePicker" data-dojo-type="dojox.mobile.ValuePickerDatePicker" data-dojo-props="slotOrder:[2,1,0]"></div>  

在 Android 设备上的浏览器中尝试此示例 http://jsfiddle.net/sport_johan/q943mbrs/1/

最佳答案

我们通过创建新版本的 dojox.mobile.ValuePickerSlot 解决了这个问题类和 dojox.mobile.ValuePickerDatePicker 类。

在作为 ValuePickerSlot 副本的 MyValuePickerSlot 中,我们使用点击事件而不是触摸事件。因此,首先复制 ValuePickerSlot.js,然后在 MyValuePickerSlot.js 中删除以下处理程序:

// this.connect(this.plusBtnNode, touch.press, "_onTouchStart"),
// this.connect(this.minusBtnNode, touch.press, "_onTouchStart"),

而是添加

this.connect(this.plusBtnNode, "onclick", "_onClick"),
this.connect(this.minusBtnNode, "onclick", "_onClick"),

您还可以删除函数 _onTouchStart、_onTouchMove 和 _onTouchEnd,因为您将不再使用它们。

您现在必须创建一个新类 MyValuePickerDatePicker,它继承了原始类的所有功能,但您覆盖了创建插槽类的构造函数,现在是新的 MyValuePickerSlot。

define(["dojo/_base/declare",
"dojo/_base/lang",
"dojox/mobile/ValuePickerDatePicker",
"myApp/dojox-fix/MyValuePickerSlot"],
function (declare, lang, ValuePickerDatePicker, MyValuePickerSlot) {

return declare("myApp.dojox-fix.MyValuePickerDatePicker",[ValuePickerDatePicker], {
// Override of the ValuePickerDatePicker to fix a touch event bug
// on Android device
constructor: function (args) {
this.slotClasses = [
MyValuePickerSlot,
MyValuePickerSlot,
MyValuePickerSlot
];
lang.mixin(this, args);
}
});
});

您现在可以在代码中使用 MyValuePickerDatePicker 而不是损坏的 ValuePickerDatePicker。

<div id="dateSelectorDatePicker" data-dojo-type="myApp.dojox-fix.MyValuePickerDatePicker" data-dojo-props="slotOrder:[2,1,0]"></div>

副作用是,如果您想滚动得更远,则无法按住 +/- 按钮;你将不得不反复按下按钮,但你仍然可以输入一个值,所以这不是什么大问题。

关于javascript - Android 设备上的 dojo ValuePickr DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com