2010-10-06 21 views
9

我们正在开发一个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

+0

我有同样的问题。 – 2010-11-15 13:24:51

+0

这里也是同样的问题。仍然没有运气的解决方案。 – 2010-11-18 01:30:00

+1

我一直无法重现您遇到的问题。此[简单演示](http://jsbin.com/ogona4/7)似乎在我的第一代iPod touch上运行得非常好,运行iOS 3.1 – brianpeiris 2010-11-18 06:08:31

回答

2

也许你可以使用焦点事件,jQuery中,这将是:

$('#select2').focus(function() { 
    // update select2's elements 
}); 

虽然真正的问题是,当iPhone超载进来,而当事件被解雇。在这个视图中,选择选项也可以改变。

+0

我和OP有同样的问题。我尝试过focus(),blur()和change(),但iPhone似乎仍在缓存列表内容,直到再次点击Next/Prev。 – 2010-11-18 01:29:05

+1

是的,同样的,尝试focus(),blur()和change(),这些工作都没有。此外,为什么upvote不起作用,甚至没有测试。 – 2010-11-18 15:31:20

0

我在我的网站上遇到了同样的问题。我能够通过在选择控件上手动轮询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事件来修复它。

相关问题