jquery - ipad 禁用没有 jquery 的选择选项

标签 jquery html ipad jquery-plugins jquery-selectors

有一种方法、插件或代码片段我可以用来制作

<select><option disable="disable">....</option></select>

iPad 上的 Safari 中的选项要禁用吗?

后期编辑:这里是代码:

     function getSelectedValues(ids) {

    var selectedValues = []
    , $selected = $('.selector').children('option:selected');       

    $selected.each(function(){  
        if(this.value != 0){
            if(ids == true){
                selectedValues.push(this.value+'-'+$(this).parent().attr('id'));
            } else {
                selectedValues.push(this.value);
            }
        }           
    });     
    return selectedValues;  
}


function clearDisabled() {
    $('.selector').children(':disabled').attr('disabled', false);
}

function disableSelected(selectedValues,id) {

    sv = selectedValues || [];

    if(id === true){
        var selectedIds  = [];
        var selectedVals = [];

        $.each(selectedValues, function(key, value) { 
            values = value.split('-');

            selectedVals.push(values[0]);
            selectedIds.push(values[1]);

        });

        for (var i=0;i<selectedVals.length;i++) {
            $('.selector').each(function(){
                if($(this).attr('id') == selectedIds[i]){
                    $('option[value=' + selectedVals[i] + ']',this).not(':selected').attr('disabled', true);
                }
            });
        }
    }
}

$(document).ready(function(){
    $('.selector').change(function(){
        selectedValues = getSelectedValues(true);
        clearDisabled();
        disableSelected(selectedValues, true);
    });

    var selectedValues = getSelectedValues(true);
    disableSelected(selectedValues, true);
});

我做了一些挖掘,我意识到这是 safari mobile 的限制......

最佳答案

跨浏览器实现要复杂一些,iPad 和 iPhone 的 safari、ie6 以及我认为其他一些浏览器都会忽略禁用的选项。

您需要删除它们。因此,请保留一份副本并在需要时重建选项。

这是一个示例,您可以根据选项的值启用/禁用选项

var $select = $("select#myselect");
$select.data("copy", $select.find("option"))

function disableOption($option) {
  var optionVal = $option.val();
  $select.empty()
  $select.data("copy").each(function(){
    var $currentOption = $(this);
    if (optionVal !== $currentOption.val() && $currentOption.attr("disabled")!=="disabled") $select.append($currentOption);
    else $currentOption.attr("disabled", "disabled");
  });
}


function enableOption($option) {
  var optionVal = $option.val();
  $select.empty()
  $select.data("copy").each(function(){
    var $currentOption = $(this);
    if (optionVal === $currentOption.val()) $currentOption.removeAttr("disabled")
    if ($currentOption.attr("disabled")!=="disabled") $select.append($currentOption);
  });
}

关于jquery - ipad 禁用没有 jquery 的选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553880/

相关文章:

iphone - 使用丢失的 EXIF 标签更正存储在文档中的 UIImage 的方向

html - 下拉菜单中的颜色变化不适用于 iPad,适用于其他一切

iphone - 如何为状态 UIControlStateHighlighted 设置按钮标签文本颜色

javascript - jQuery 文档准备好社交共享服务的 buggyness

jquery - 使用 jQuery 在我的表单中选择一个选项时尝试显示一个字段,但它不起作用。我究竟做错了什么?

javascript - 如何在 html 表格单元格中找到部分字符串并将文本附加到该值

javascript - jquery/js 错误 - DOM 错误 : DOM Exception 8 - When I . html 任何变量

javascript - LeanModal 中的关闭按钮

Javascript:没有HTML标签的字符串长度

html - Bootstrap 轮播的分辨率和宽高比图像大小