我在我的bootstrap 3响应式网站上使用fastclick来加快移动设备的响应时间。一般情况下这没有问题。 但经过多次测试后,我发现这打破了iPhone上的自举单选按钮。
按钮最初有效,但如果更改所选选项,则仅在提交表单时传递第一个选定选项。 删除快速单击会停止此行为。 或者更重要的是,在我的最小测试页面上添加fastclick会使行为发生。 在iphone上的safari和chrome都会发生这种情况。
我发现文章说添加jquery-mobile和调整单选按钮的标记也会改善响应时间。 但是我在网站中使用了jquery-ui滑块并添加了jquery移动冲突。 我的目的是禁用单选按钮上的快速单击(通过'needsclicks'类)并让jqmobile处理它。
为自定义网站的滑块并使其在移动设备上工作并且看起来很漂亮,已经做了很多工作。我不想重新设计整个网站,希望加入jqmobile会有所帮助。我们也没有时间。
我该如何解决这个问题。我很惊讶我找不到使用fastclick和bootstrap单选按钮的任何其他数据。当然我可以禁用单选按钮上的快速单击,但这使得它们使用起来很糟糕,这对于此应用程序是不可接受的。
我可以通过某种方式手动修复这些单选按钮以使用iphone。 这不是Android上的问题。 有没有我找不到的修复工具?
答案 0 :(得分:4)
也在ipad上重现了这个问题。
问题:Fastclick触发两个单击事件:一个用于标签,另一个用于输入:冒泡。
解决方案:使用' needsclick'输入类:无线电场。更多信息:https://github.com/ftlabs/fastclick#use-case-2-twitter-bootstrap-222-dropdowns
答案 1 :(得分:0)
经过一些严重的脑弯曲工作后,我发现问题的原因只会在收音机被选中后才会发生。这是通过最初设置单选按钮IE再次显示具有预先选择的值的形式。当选择初始值并更改选项时(选择另一个选项不同)。这让我相信实际设置单选按钮中的值的过程与fastclick冲突。
我注意到的是当没有选择任何选项时它会完美地运作。因此必须在使用iphone进行测试后,在每个标签的触摸事件中添加以下代码。基本上,每次触摸时,它都会完全清除单选按钮。然后它就像按下单选按钮一样按下它就像第一次初始选择一样。
$( "#radio_button_label_id").bind( "touchend", function( e ){
resetRadio_radioid( );
})
function resetRadio_radioid( ){
var ids = array('radio_option_1_id', 'radio_option_2_id', 'radio_option_3_id');
for(i=0; i<ids.length;i++){
//clear all checked data
$('#'+ids[i]).prop('checked', false);
$('#'+ids[i]).removeAttr('checked');
}
return true;
}
这完全解决了这个问题。 希望它有所帮助。