Bootstrap 3单选按钮无法在iphone上快速单击

时间:2014-02-13 23:02:53

标签: iphone radio-button twitter-bootstrap-3

我在我的bootstrap 3响应式网站上使用fastclick来加快移动设备的响应时间。一般情况下这没有问题。 但经过多次测试后,我发现这打破了iPhone上的自举单选按钮。

按钮最初有效,但如果更改所选选项,则仅在提交表单时传递第一个选定选项。 删除快速单击会停止此行为。 或者更重要的是,在我的最小测试页面上添加fastclick会使行为发生。 在iphone上的safari和chrome都会发生这种情况。

我发现文章说添加jquery-mobile和调整单选按钮的标记也会改善响应时间。 但是我在网站中使用了jquery-ui滑块并添加了jquery移动冲突。 我的目的是禁用单选按钮上的快速单击(通过'needsclicks'类)并让jqmobile处理它。

为自定义网站的滑块并使其在移动设备上工作并且看起来很漂亮,已经做了很多工作。我不想重新设计整个网站,希望加入jqmobile会有所帮助。我们也没有时间。

我该如何解决这个问题。我很惊讶我找不到使用fastclick和bootstrap单选按钮的任何其他数据。当然我可以禁用单选按钮上的快速单击,但这使得它们使用起来很糟糕,这对于此应用程序是不可接受的。

我可以通过某种方式手动修复这些单选按钮以使用iphone。 这不是Android上的问题。 有没有我找不到的修复工具?

2 个答案:

答案 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;
        }

这完全解决了这个问题。 希望它有所帮助。