jQuery отключает опции SELECT на основе выбранного Радио (Нуждайтесь в поддержке для всех браузеров),

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать form-data, и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде GET параметров, а не POST данных. Держу пари, что если бы вы print_r(

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

 Вместо того, чтобы использовать вкладку  Params , попробуйте перейти к  Body  и выбрать form-data, и ввести там свои пары ключ / значение. 

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде GET параметров, а не POST данных. Держу пари, что если бы вы print_r(

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET)
увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET' =>

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать form-data, и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде GET параметров, а не POST данных. Держу пари, что если бы вы print_r(

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET)
увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET, '

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать form-data, и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде GET параметров, а не POST данных. Держу пари, что если бы вы print_r(

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET)
увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST' =>

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать form-data, и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде GET параметров, а не POST данных. Держу пари, что если бы вы print_r(

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET)
увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST, ]);

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

GET)
увидели данные, которые ожидали увидеть в

Вместо того, чтобы использовать вкладку Params , попробуйте перейти к Body и выбрать [111], и ввести там свои пары ключ / значение.

Я не думаю, что это имеет какое-либо отношение к PHP. Проблема заключается в том, что вкладка Params отправляет ваши данные в виде [112] параметров, а не [113] данных. Держу пари, что если бы вы [114] увидели данные, которые ожидали увидеть в [115].

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

POST
.

Редактировать: используя как параметры, так и тело

Можно передавать настройки в обоих местах. Рассмотрим:

[110]

И в Почтальоне, просто сделайте это:

enter image description here

Обратите внимание, что переменные в Params в строке запроса.

34
задан Phill Pafford 18 May 2009 в 15:55
поделиться

8 ответов

Правильный способ достичь желаемой функциональности - просто удалить параметры. Как вы выяснили на собственном горьком опыте, отключение отдельных параметров не очень хорошо поддерживается браузерами. Я просто проснулся и почувствовал, что хочу что-то программировать, поэтому я создал небольшой плагин, чтобы легко фильтровать выбор на основе выбранного атрибута идентификатора радио. Хотя остальные решения выполнят свою работу, если вы планируете делать это во всем приложении, это должно помочь. Если нет, то, думаю, это для всех, кто наткнется на это. Вот код плагина, который вы могли бы где-то спрятать:

jQuery.fn.filterOn = function(radio, values) {
    return this.each(function() {
        var select = this;
        var options = [];
        $(select).find('option').each(function() {
            options.push({value: $(this).val(), text: $(this).text()});
        });
        $(select).data('options', options);
        $(radio).click(function() {
            var options = $(select).empty().data('options');
            var haystack = values[$(this).attr('id')];
            $.each(options, function(i) {
                var option = options[i];
                if($.inArray(option.value, haystack) !== -1) {
                    $(select).append(
                    $('<option>').text(option.text).val(option.value)
                    );
                }
            });
        });            
    });
};

И вот как его использовать:

$(function() {
    $('#theOptions').filterOn('input:radio[name=abc123]', {
        'abc': ['a','b','c'],
        '123': ['1','2','3']        
    });
});

Первый аргумент - это селектор для радиогруппы, второй - словарь, где ключи - это идентификатор радиостанции для сопоставления, а значение - это массив того, какие значения параметров выбора должны остаться. Есть много вещей, которые можно сделать, чтобы абстрагироваться от этого дальше, дайте мне знать, если вам интересно, и я определенно смогу это сделать.

Вот демонстрация этого в действии .

EDIT : Кроме того, забыл добавить, согласно документации jQuery :

В jQuery 1.3 [@attr] селекторы стиля были удалены (ранее они устарели в jQuery 1.2). Просто удалите символ «@» из ваших селекторов, чтобы они снова заработали.

72
ответ дан 27 November 2019 в 16:12
поделиться

какой браузер вы используете? Я никогда не использовал его раньше, но, похоже, он не поддерживается в IE до IE8. См. Эту ссылку для получения дополнительной информации:

http://www.w3schools.com/TAGS/att_option_disabled.asp

1
ответ дан 27 November 2019 в 16:12
поделиться
$(":radio[name=abc123]").click(function() {
   var $options = $("#theOptions")
   var toggle = ($(this).val() == 'abc') ? true : false;

   $("[value=1],[value=2],[value=3]", $options).attr("disabled", toggle);
   $("[value=a],[value=b],[value=c]", $options).attr("disabled", !toggle);
});
0
ответ дан 27 November 2019 в 16:12
поделиться

Ваш селектор неверен. Вместо

$("'theOptions' option[value='1']")

вы должны использовать

$("#theOptions > option[value='1']")

См. Также документацию по селекторам jQuery . И взгляните на предложение от aman.tur.

0
ответ дан 27 November 2019 в 16:12
поделиться

Если вы хотите отключите некоторые параметры, тогда код ниже должен работать

$("input:radio[name='abc123']").click(function() {
   var value = $(this).val();

   $("option[value='1'], option[value='2'], option[value='3']", "#theOptions").each(function(){
      this.disabled = value == 'abc';
   });
   $("option[value='a'], option[value='b'], option[value='c']", "#theOptions").each(function(){
      this.disabled = value == '123';
   })
});

и переключатели

ABC: <input type="radio" name="abc123" value="abc" id="abc"/>
123: <input type="radio" name="abc123" value="123" id="123"/>

. Если вы хотите удалить параметры из списка выбора, используйте этот код

$(function(){
   var options = null;
   $("input:radio[name='abc123']").click(function() {
      var value = $(this).val();
      if(options != null)options.appendTo('#theOptions');
      if(value == 'abc' )
         options = $("option[value='1'], option[value='2'], option[value='3']", "#theOptions").remove();
      else if(value == '123')
         options = $("option[value='a'], option[value='b'], option[value='c']", "#theOptions").remove();
   });
});

Кстати. в моем коде используется текущая стабильная версия jQuery (1.3.2). Если вы используете старую версию, вам нужно будет изменить селекторы атрибутов на старый синтаксис.

option [value = '1'] на option [@ value = '1']

0
ответ дан 27 November 2019 в 16:12
поделиться

первая проблема с

$(this).val()

замените его на

$(this).attr('id') == 'abc'

, тогда это не сработает

$("'theOptions'..")

используйте

$("#theOptions option[value='1']").attr('disabled','disabled') //to disable
$("#theOptions option[value='a']").attr('disabled','') //to ENABLE
3
ответ дан 27 November 2019 в 16:12
поделиться

Вам нужно что-то вроде этого - Пример кода здесь

$(function() {

$("input:radio[@name='abc123']").click(function() {
   if($(this).attr('id') == 'abc') {

      // Disable 123 and Enable abc
      $("#theOptions option[value='1']").attr("disabled","disabled");
      $("#theOptions option[value='2']").attr("disabled","disabled");
      $("#theOptions option[value='3']").attr("disabled","disabled");
      $("#theOptions option[value='a']").attr("selected","selected");
      $("#theOptions option[value='a']").attr("disabled","");
      $("#theOptions option[value='b']").attr("disabled","");
      $("#theOptions option[value='c']").attr("disabled","");

   } else {
      // Disable abc's and Enable 123
      $("#theOptions option[value='a']").attr("disabled","disabled");
      $("#theOptions option[value='b']").attr("disabled","disabled");
      $("#theOptions option[value='c']").attr("disabled","disabled");
      $("#theOptions option[value='1']").attr("selected","selected");          
      $("#theOptions option[value='1']").attr("disabled","");   
      $("#theOptions option[value='2']").attr("disabled","");
      $("#theOptions option[value='3']").attr("disabled","");

   }    
});

});

РЕДАКТИРОВАТЬ:

Улучшенная версия кода, использующая регулярное выражение для фильтрации параметров на основе значений параметров. Рабочий пример здесь . Вы можете отредактировать пример, добавив / edit к URL-адресу

$(function() {

    $("input:radio[@name='abc123']").click(function() {

        // get the id of the selected radio
        var radio = $(this).attr('id'); 

        // set variables based on value of radio
        var regexDisabled = radio == 'abc' ?  /[1-3]/ : /[a-c]/;      
        var regexEnabled = radio == 'abc' ? /[a-c]/ : /[1-3]/;
        var selection = radio == 'abc' ? 'a' : 1;

        // select all option elements who are children of id #theOptions
        $("#theOptions option")
            // filter the option elements to only those we want to disable
            .filter( function() { return this.value.match(regexDisabled);})
            // disable them
            .attr("disabled","disabled")
            // return to the previous wrapped set i.e. all option elements
            .end()
            // and filter to those option elements we want to enable
            .filter( function() { return this.value.match(regexEnabled);})
            // enable them
            .attr("disabled","");
       // change the selected option element in the dropdown
       $("#theOptions option[value='" + selection + "']").attr("selected","selected");

    });

});

РЕДАКТИРОВАТЬ 2:

Поскольку атрибут disabled не работает надежно во всех браузерах, я думаю, что ваш единственный вариант - удалить элементы option не нужны, когда выбран переключатель. Рабочий пример здесь

  $(function() {

        $("input:radio[@name='abc123']").click(function() {

            // store the option elements in an array
            var options = [];
            options[0] = '<option value="1">1</option>';
            options[1] = '<option value="2">2</option>';
            options[2] = '<option value="3">3</option>';
            options[3] = '<option value="a">a</option>';
            options[4] = '<option value="b">b</option>';
            options[5] = '<option value="c">c</option>';


            var radio = $(this).attr('id');   
            var regexEnabled = radio == 'abc' ? /[a-c]/ : /[1-3]/;

            // set the option elements in #theOptions to those that match the regular expression
            $("#theOptions").html(
            $(options.join(''))
                // filter the option elements to only those we want to include in the dropdown
                .filter( function() { return this.value.match(regexEnabled);})
            );


        });

    });

или даже

  $(function() {

        // get the child elements of the dropdown when the DOM has loaded
        var options = $("#theOptions").children('option');

        $("input:radio[@name='abc123']").click(function() {         

            var radio = $(this).attr('id');   
            var regexEnabled = radio == 'abc' ? /[a-c]/ : /[1-3]/;

            // set the option elements in #theOptions to those that match the regular expression
            $("#theOptions").html(
            $(options)
                // filter the option elements to only those we want to include in the dropdown
                .filter( function() { return this.value.match(regexEnabled);})
            );

        }); 
    });
17
ответ дан 27 November 2019 в 16:12
поделиться

просто исправьте селектор $ ("'theOptions' option [value = '1']") на $ ("# theOptions option [value = '1']") и все будет работать нормально

0
ответ дан 27 November 2019 в 16:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: