Ipad отключить выбор параметров без JQuery - PullRequest
2 голосов
/ 26 сентября 2011

Есть способ, плагин или фрагмент кода, который я мог бы использовать, чтобы отключить опции

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

в сафари на ipad?

последнее редактирование: вот код:

     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);
});

Я немного покопался и понял, что это ограничение сафари мобил ...

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Сложнее получить кросс-браузерную реализацию, сафари для iPad и iPhone, т.е. 6, и я предполагаю, что некоторые другие браузеры просто игнорируют отключенные опции.

Вы должны удалить их. Поэтому сохраните его копию и перестройте параметры в любое время.

Это пример, в котором вы можете включать / отключать опции, основываясь на их значении

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);
  });
}
1 голос
/ 26 сентября 2011
$("select option[disable='disable']").attr("disabled","disabled");

или если вы используете jquery 1.6 или выше

  $("select option[disable='disable']").prop("disabled",true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...