使用Mobile Safari"表单助手"更改未在选定元素上触发的事件

wdm*_*wdm 9 iphone jquery mobile-safari ios jquery-mobile

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

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

$('.month').change(function() {
    // update "days" select element
});
Run Code Online (Sandbox Code Playgroud)

仅供参考我也在使用jQuery mobile

And*_*ndy 6

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

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

});
Run Code Online (Sandbox Code Playgroud)

或者你试过:

$('.month').live('change',function(){
});
Run Code Online (Sandbox Code Playgroud)


wdm*_*wdm 3

我能找到的最好的解决方法是基于这篇文章......

在 Mobile Safari 下拉列表项选择框中使用“下一步”时,select/dropdown 的 onchange() JS 事件的奇怪行为

使用该插件(来自上面的链接),我必须在blur使用 Mobile Safari 的“表单助手”选择选项后立即强制选择菜单。

然而,我注意到,当暴力测试这些菜单时,blur在几次来回选择后会触发一个额外的事件。额外的focus似乎可以解决这个问题。

$('select').quickChange(function () {
    $(this).blur();
    $('select').focus(); // somehow prevents an extra blur from firing on focus
});
Run Code Online (Sandbox Code Playgroud)

通过一个单独的change函数,我动态更新第二个选择菜单。

$("#select-choice-month").change(function () {
    // update second select dynamically
});
Run Code Online (Sandbox Code Playgroud)

*迄今为止仅在 Mobile Safari / iOS 5.0.1 上进行了测试。