2011-05-17 159 views
6

我正在尝试为移动Safari浏览器做一个简单的级联下拉菜单。我在safari本身有100%的工作,这显示了正常的风格下降。但移动Safari浏览器下拉菜单有一个“下一个”按钮。iPhone上的下拉菜单中的'next'不会在更改事件上触发

击中这下按钮将下一个下拉与触发的onchange()级联 - 因此未来下拉列表是空的。

用户被迫按'完成'触发更改,然后单击下一个下拉菜单。

有没有人知道解决这个问题的方法。或者手机safari的'下一个'触发了什么DOM事件?

+0

只是要注意的(搜索引擎优化的目的也),人们可能会将这到jQuery或jQuery的移动或其他JavaScript库,但如果这仍然是一个问题,今天(这是我们的),那么它肯定会很高兴听到一个解决方案。 – iJames 2011-10-11 01:06:58

+1

这个问题的一个有趣的解决方案是**停用下一个和上一个按钮**。在这样的尝试已经在这里提供: http://stackoverflow.com/questions/7472465/disabling-previous-and-next-buttons-in-mobile-safari – iJames 2011-11-09 20:42:39

+0

从[此帖](HTTP插件: //stackoverflow.com/questions/5960731/strange-behavior-of-select-dropdowns-onchange-js-event-when-using-next-on-m/7284325#7284325)为我工作。它似乎是加载第二个列表,只要你在第一个列表中选择的项目,而不是等到用户点击'下一个'或'完成' – Billy 2011-11-16 16:51:18

回答

0

这是一个iOS原生覆盖图,所以当覆盖图出现时,您会得到一个模糊事件。尝试使用模糊事件,看看它是如何工作的。

+0

从我可以告诉,这不是骰子。我尝试了模糊处理,甚至专注于第二个下拉菜单。在iOS 5的这两种情况下,叠加层似乎都会在更改/模糊/焦点事件之前捕获下拉选项,因此不会允许更新下拉菜单,从而不允许iOS杯子更新。仍然希望有一个解决方案。 Vernon,你对这个iOS原生覆盖图有什么其他想法吗?谢谢! – iJames 2011-10-28 01:14:38

+0

我想知道是否有可能发生其他事情。这是我在iPhone上设置和测试的jsFiddle。 http://jsfiddle.net/Wjbxt/1/在第一个下拉列表中进行选择并更新预览中的值后,点击下一个时,更改事件就会触发。我在iOS 5上,测试一下,让我知道你得到了什么。 – vernonk 2011-10-28 13:35:47

+0

此更新(http://jsfiddle.net/Wjbxt/2/)会将所选值预加到第二个下拉列表中。这不会立即发生。如果我先前再回到第二个下拉列表,那么值就在那里。它只是没有立即拾起。肯定需要更多的研究。 – vernonk 2011-10-28 13:40:17

0

我已经尝试了许多直接解决方案来解决这个问题没有成功。第二个下拉列表填入之后 Safari Mobile的“表单助手”覆盖图出现了微调器(在文档中称为“选择器” - http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html)。所以选择器被填入旧值。

在另一情况下,如果第二级联下拉是无效的,形式助理的下一步按钮右侧超过它跳过。但是,在这种情况下,一旦下面的表单元素登陆,第二个下拉菜单就会正确更新自己,因此在那一点上点击“前一个”会在选择器中给出正确的列表。

我的“答案”是Apple建议不要使用基于JavaScript的级联下拉菜单,但要实现另一个UX,尽管我没有发现任何与标准jQuery Mobile类型的分页菜单相关的内容。

2

禁用第二滴从一开始就下是唯一的解决办法我迄今发现!你选择和使用JavaScript或者jQuery来启用或禁用它,将禁用iPhone上的“下一步”按钮

添加禁用ATTR(禁用=“禁用”)。

这里是jQuery代码

$(".DD1").focus(function() { 
    $('.DD2').attr('disabled', 'disabled'); 
}).blur(function() { 
    $('.DD2').removeAttr('disabled'); 
}); 

这里是使用这样

jQuery的一个活生生的例子: http://www.imotors.com/mobile

相关问题