使用 Mobile Safari“表单助手”在选择元素上未触发更改事件
Posted
技术标签:
【中文标题】使用 Mobile Safari“表单助手”在选择元素上未触发更改事件【英文标题】:Change event not firing on select elements with Mobile Safari "form assistant" 【发布时间】:2011-12-02 14:51:07 【问题描述】:我有动态选择下拉菜单。例如,如果您选择特定月份,则第二个选择元素将填充该月的天数。
这按预期工作,但是当用户在 iPhone 上并使用 Mobile Safari 的“表单助手”中内置的“下一步”按钮时,change
事件(使用 jQuery)似乎不会触发,第二个选择不更新。
$('.month').change(function()
// update "days" select element
);
仅供参考,我也在使用 jQuery 移动版
【问题讨论】:
iPhone 调试器中的任何输出(Safari 调试模式)? 无。我在想这可能只是一个移动 safari 错误。 【参考方案1】:您还可以绑定一些额外的事件,例如blur
(虽然不知道模糊是否会在 iphone 上触发)
$('.month').bind('change blur',function()
);
或者你有没有试过:
$('.month').live('change',function()
);
【讨论】:
感谢您的建议。我尝试了几个不同的事件,因为我认为这可能是问题所在。无法开火。 月份选择在 DOM 中是静态的,因此我认为没有必要使用live()
函数。无论如何我试了一下,没有运气。
@wdm hm 太糟糕了。我在这里找到它***.com/questions/6431611/…【参考方案2】:
我能找到的最佳解决方法是基于这篇文章...
Strange behavior of select/dropdown's onchange() JS event when using 'Next' on Mobile Safari Dropdown list item select box
使用该插件(来自上面的链接),一旦使用 Mobile Safari 的“表单助手”选择了一个选项,我就必须将选择菜单强制设置为 blur
。
然而,我注意到,在对这些菜单进行暴力测试时,会在几次来回选择后触发一个额外的 blur
事件。额外的focus
似乎可以解决这个问题。
$('select').quickChange(function ()
$(this).blur();
$('select').focus(); // somehow prevents an extra blur from firing on focus
);
通过单独的change
函数,我正在动态更新第二个选择菜单。
$("#select-choice-month").change(function ()
// update second select dynamically
);
*目前仅在 Mobile Safari / ios 5.0.1 上测试。
【讨论】:
以上是关于使用 Mobile Safari“表单助手”在选择元素上未触发更改事件的主要内容,如果未能解决你的问题,请参考以下文章
在 Mobile Safari 中选择 onchange 后,将焦点设置为输入字段
在 iOS Mobile Safari 和/或 UIWebView 中控制文本选择行为?
对选择合适的 iOS Mobile Safari Web 开发工具(jQuery Mobile/Sencha Touch/etc)感到沮丧
HTML5 Mobile Safari DatePicker - 初始值