2011-10-06 59 views
9

我有动态选择下拉菜单。例如,如果选择特定的月份,则第二个select元素将填充该月的天数。使用Mobile Safari“表单助手”更改事件不会触发选定元素

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

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

FYI我还使用jQuery Mobile的

+0

iPhone调试器(Safari调试模式)的任何输出? –

+0

无。我认为这可能只是一个移动Safari浏览器的bug。 – wdm

回答

2

我能找到的最好的解决方法是基于这个帖子...

Strange behavior of select/dropdown's onchange() JS event when using 'Next' on Mobile Safari Dropdown list item select box

使用插件(从上面的链接),我不得不尽快作为一个选项被选择与移动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上进行了测试。

5

您还可以结合一些额外的活动,如blur(不知道是不是不模糊火iphone虽然)

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

}); 

或有你试过了:

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

感谢您的建议。我尝试了几个不同的事件,因为我认为这可能是问题所在。无法得到任何消防。 – wdm

+0

@wdm更新了我的回答 – Andy

+0

月份选择在DOM中是静态的,所以我不相信'live()'函数是必要的。无论如何,我都给了它一个镜头,没有运气。 – wdm

相关问题