0

我在一个简单的网页上嵌入了一个 dojox.mobile.valuepicker。valuepicker 在任何桌面浏览器上都可以正常工作,但在 iPad 或 Android 平板电脑上它会在浏览器中表现出一些奇怪的行为。如果您使用 + 和 - 按钮增加或减少 iPad 上的值,则从小部件返回的值始终比 valuepicker 中显示的值大 1 或小 1(如果您增加小部件返回的值小 1比小部件显示的值,再减少一个)。我已经在具有不同操作系统版本的多台 iPad 上尝试过这个。这是我的代码。

 var widgetValueIs = null; 
                    widgetToTest= dijit.byId("rateMeasurement"); 
                    widgetToTest.on("touchend, click, change", function() { 
                        widgetValueIs = dijit.byId('rateMeasurement').get('value'); 
                        if (widgetValueIs >= 12 && widgetValueIs <= 20){ 
                         domAttr.set("rateScore", "innerHTML", widgetValue); 
                        } else if (widgetValueIs >= 9 && widgetValueIs <= 11){ 
                         domAttr.set("rateScore", "innerHTML", widgetValue); 

                        } else { 
                         domAttr.set("rateScore", "innerHTML", widgetValue); 
                        } 
                     }); 

我假设这与我在更新选择器值之前发生的捕获有关,但是我如何确保在更新检索到该值?

谢谢,斯蒂芬

4

1 回答 1

1

好的,从我能够拼凑的内容来看,Dojo 触摸事件处理似乎内置了一个延迟机制(用于处理双点触摸和缩放类型的手势)。因此,为了确保我从更新的小部件中获得正确的值,我在触发触摸事件后运行了一个小延迟(250 毫秒)。这现在从 dojox 移动小部件中获取正确的值。

'var widgetValueIs = null; 
                widgetToTest= dijit.byId("rateMeasurement"); 
                widgetToTest.on("touchend, click, change", function() { 
                // Add a delay to compensate for Dojo's touch event handling 
                   setTimeout(function() {
                    widgetValueIs = dijit.byId('rateMeasurement').get('value'); 
                    if (widgetValueIs >= 12 && widgetValueIs <= 20){ 
                     domAttr.set("rateScore", "innerHTML", widgetValue); 
                    } else if (widgetValueIs >= 9 && widgetValueIs <= 11){ 
                     domAttr.set("rateScore", "innerHTML", widgetValue); 

                    } else { 
                     domAttr.set("rateScore", "innerHTML", widgetValue); 
                    } 
                   }, 250);
                 }); '

看来我需要延迟,因为我有一些处理会在小部件触摸事件触发后立即对小部件值执行。以上对我有用,但我确定是否有一些时髦的 Dojo 方式来处理这个问题。

于 2013-02-25T11:15:14.677 回答