我们正在开发一个Web应用程序,并且定制了可在iPhone上使用的GUI。应用程序页面上有3个后续SELECT下拉菜单,其中第一个下拉菜单中的选项会从第二个下拉菜单中选择选项,等等。随后的下拉选项由基于on previous change的onchange事件的javascript填充。 问题是,在iPhone上,SELECT的选项会显示'prev'和'next'链接以移至上一个和下一个控件。当点击“下一个”链接时,控制转到下一个选择并显示选项。 JavaScript由前一个SELECT的onchange事件触发,并填充下一个SELECT的选项。但是在第二个SELECT的下拉列表中,显示之前的选项,然后由javascript重新填充。 有没有一种解决方法或事件,可以顺序JavaScript的执行,然后选择下一个控制?当选择SELECT选项并且在控制离开SELECT元素之前,是否可以触发任何事件? SELECT下拉选项显示的Next和Previous链接是否有句柄?在iPhone上处理HTML SELECT选项并将事件委托给javascript Safari
回答
也许你可以使用焦点事件,jQuery中,这将是:
$('#select2').focus(function() {
// update select2's elements
});
虽然真正的问题是,当iPhone超载进来,而当事件被解雇。在这个视图中,选择选项也可以改变。
我和OP有同样的问题。我尝试过focus(),blur()和change(),但iPhone似乎仍在缓存列表内容,直到再次点击Next/Prev。 – 2010-11-18 01:29:05
是的,同样的,尝试focus(),blur()和change(),这些工作都没有。此外,为什么upvote不起作用,甚至没有测试。 – 2010-11-18 15:31:20
我在我的网站上遇到了同样的问题。我能够通过在选择控件上手动轮询selectedIndex
属性来修复它。这样,只要你“检查”列表中的项目,它就会启动。下面是我写的一个jQuery插件:
$.fn.quickChange = function(handler) {
return this.each(function() {
var self = this;
self.qcindex = self.selectedIndex;
var interval;
function handleChange() {
if (self.selectedIndex != self.qcindex) {
self.qcindex = self.selectedIndex;
handler.apply(self);
}
}
$(self).focus(function() {
interval = setInterval(handleChange, 100);
}).blur(function() { window.clearInterval(interval); })
.change(handleChange); //also wire the change event in case the interval technique isn't supported (chrome on android)
});
};
您可以像使用“更改”事件一样使用它。例如:
$("#mySelect1").quickChange(function() {
var currVal = $(this).val();
//populate mySelect2
});
编辑:Android不集中的选择,当你点击它选择一个新的价值,但它也没有说iphone做了同样的问题。所以通过连接旧的change
事件来修复它。
- 1. Javascript:了解事件委托处理
- 2. iphone检测委托事件
- 3. 关于C#委托/事件处理
- 4. C#委托事件处理程序SelectedIndexChanged
- 5. C#委托与事件处理程序
- 6. 在事件委托上使用 - =时,System.ArgumentException未处理?
- 7. Visual Studio测试项目可以处理事件和委托吗?
- 8. 委托事件
- 9. 将独特的jQuery事件处理程序委托给子元素
- 10. 为什么我无法将事件处理程序2委托给深层?
- 11. 为什么我无法将处理程序委托给此滚动事件?
- 12. Akka流和委托处理给演员
- 13. 将多个事件的JQuery委托附加到处理程序
- 14. jQuery的委托()/上() - 事件
- 15. JavaScript中的“事件委托”和“事件处理”之间的区别是什么?
- 16. Javascript Html事件处理
- 17. 委托ItemClick事件处理到孩子的单击事件处理(scaleform)
- 18. 为什么不把Javascript事件委托给极端?
- 19. 事件委托给子视图Backbone.js的
- 20. 将事件委托给表单而不创建循环引用
- 21. 将事件和委托事件处理程序传递到泛型Helper方法
- 22. 将选定选项传递给其他元素上的事件处理函数
- 23. 事件处理程序在委托类型中抛出错误?
- 24. 在静态工厂方法中分配事件处理委托
- 25. 需要处理的事件从<select>选择选项?
- 26. 设置在委托上的事件
- 27. 多线程委托/事件
- 28. 事件委托在C++中
- 29. 事件委托(在)平等?
- 30. 回调处理委托时处理?
我有同样的问题。 – 2010-11-15 13:24:51
这里也是同样的问题。仍然没有运气的解决方案。 – 2010-11-18 01:30:00
我一直无法重现您遇到的问题。此[简单演示](http://jsbin.com/ogona4/7)似乎在我的第一代iPod touch上运行得非常好,运行iOS 3.1 – brianpeiris 2010-11-18 06:08:31