动态选择在iPhone上无法工作

4
我有两个选择元素。在第一个选择上做出选择将构建第二个选择的选项。在桌面浏览器上运行良好。
在iPhone上,当您在第一个选择上做出选择并选择“下一步”后,选项不会在第二个选择中填充。到目前为止,唯一的方法是从第二个选择返回“上一个”然后返回“下一个”到第二个选择。另一种方法是单击“完成”,然后点击第二个选择。
我尝试了.change()和.click(),但两者产生相同的结果。
以下是JS代码,这里是一个工作示例http://damonomania.com/select/ 有什么建议吗?TIA!
$(document).ready(function(){

    $('#select-1').change(function() {
        show_options();
    });

    function show_options() {
        var id = $('#select-1').val();
        $('#select-2 option:gt(0)').remove();
        $.each(options[id], function(k,v) {
            $('#select-2').append('<option value="' + k + '">' + v + '</option>');
        });
    }
});

var options = {"17":{"835":"870","836":"871"},"18":{"435":"870","436":"871"},"13":{"1":"123546"},"19":{"1213":"4010","1206":"4015"}}

刚在我的 iPhone 4G 上尝试了一下,似乎运行良好。每次我更改第一个值时,第二个值都会有新的数值。 - spinon
1
@spinon 你能再试一次吗?我更新了动态选择器,使其相对于第一个选择器具有某些含义。因此,如果选择了“Something 2”,则新值应为“From 2a,From 2b”等。这样,你就可以知道它们是否不是来自以前的过时选择。谢谢。 - gorelog
1
啊!谢谢spinon。我不想这只是我的问题。我在一部运行4.0的3G手机上。还有其他人能在其他型号的手机上尝试一下吗?谢谢。 - gorelog
1个回答

3

我在我的网站上也遇到了相同的问题。我通过手动轮询选择控件上的 selectedIndex 属性来修复它。这样一来,当你在列表中“选中”项目时,它就会触发。以下是我编写的 jQuery 插件:

$.fn.quickChange = function(handler) {
    return this.each(function() {
        var self = this;
        self.qcindex = self.selectedIndex;
        var interval;
        function handleChange() {
            if (self.selectedIndex != self.qcindex) {
                self.qcindex = self.selectedIndex;
                handler.apply(self);
            }
        }
        $(self).focus(function() {
            interval = setInterval(handleChange, 100);
        }).blur(function() { window.clearInterval(interval); })
        .change(handleChange); //also wire the change event in case the interval technique isn't supported (chrome on android)
    });
};

您可以像使用“change”事件一样使用它。例如:

$("#mySelect1").quickChange(function() { 
    var currVal = $(this).val();
    //populate mySelect2
});

编辑:当你点击选择框来选择新值时,Android不会聚焦于选择框,但它也不会像iPhone一样出现同样的问题。因此,通过连接旧的change事件来修复它。


我刚刚快速测试了一下,很高兴发现它可以在iOS 4上运行!谢谢分享。我会经常使用它的! - gorelog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接