【问题标题】:Change event not firing on select elements with Mobile Safari "form assistant"使用 Mobile Safari“表单助手”在选择元素上未触发更改事件
【发布时间】:2011-12-02 14:51:07
【问题描述】:

我有动态选择下拉菜单。例如,如果您选择特定月份,则第二个选择元素将填充该月的天数。

这按预期工作,但是当用户在 iPhone 上并使用 Mobile Safari 的“表单助手”中内置的“下一步”按钮时,change 事件(使用 jQuery)似乎不会触发,第二个选择不更新。

$('.month').change(function() {
    // update "days" select element
});

仅供参考,我也在使用 jQuery 移动版

【问题讨论】:

  • iPhone 调试器中的任何输出(Safari 调试模式)?
  • 无。我在想这可能只是一个移动 safari 错误。

标签: jquery iphone ios jquery-mobile mobile-safari


【解决方案1】:

您还可以绑定一些额外的事件,例如blur(虽然不知道模糊是否会在 iphone 上触发)

$('.month').bind('change blur',function(){

});

或者你有没有试过:

$('.month').live('change',function(){
});

【讨论】:

  • 感谢您的建议。我尝试了几个不同的事件,因为我认为这可能是问题所在。无法开火。
  • 月份选择在 DOM 中是静态的,因此我认为没有必要使用 live() 函数。无论如何我试了一下,没有运气。
  • @wdm hm 太糟糕了。我在这里找到它stackoverflow.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 上测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多