2014-01-12 2 views
0

У меня есть мультиселекция, и я хочу отключить родительскую категорию от передачи, и я боюсь с ней в течение длительного времени.Отключить (серая) родительскую категорию и сделать ее недоступной

Пожалуйста, смотрите изображение, я хочу, чтобы отключить те, в желтом цвете с каким-либо кодом (я использую wordpres) enter image description here

Я получил это работает как-то и не выбирается, когда окно нагрузка, но когда подкатегория выбрана, все из них включаются снова, любая помощь с кодом, что они остаются не выбираемыми кодекса:

  <script type="text/javascript"> 
window.onload =function() { 
var fastInternet = document.getElementById("countrylist"); 
for (var i = 0; i < fastInternet.options.length; i++) { 
    var value = fastInternet.options[i].value; 
    if(value == '47' || value == '52' || value == '57' || value == '61') { 
     //need to hide this 
     fastInternet.options[i].setAttribute("disabled", "disabled"); 

    } 

    } 
    }; 
</script> 
+3

ПОЖАЛУЙСТА не вставляйте этот код! Опубликуйте только соответствующие разделы ... и попробуйте отформатировать его, так как никто не будет читать эти две строки или даже попытаться отформатировать их для вас. Например, удалите все, кроме двух или трех параметров в коде. Вместе с правильным форматированием он будет более читабельным. –

ответ

1

без чтения коды, здесь два варианта, сделав <option> неактивны.

  1. Используйте <optgroup>

    <select> 
        <optgroup label="Category 1"> 
        <option>Option 1</option> 
        <option>Option 2</option> 
        </optgroup>  
        <optgroup label="Category 2"> 
        <option>Option 3</option> 
        <option>Option 4</option> 
        </optgroup> 
    </select> 
    

    Documentation @ MDN

  2. В случае, если вы не можете использовать <optgroup> -tag, то просто отключить опции, которые не должны быть по выбору:

    <option disabled>an option</option> 
    


Вы разъяснено, что вам нужно использовать JS, и я буду считать, что JQuery доступен:

$("#myselect option").each(function(el) { 
    if($(this).text().slice(0, 2) != "--") { 
     $(this).attr('disabled', true); 
    } 
}); 

$("#myselect option:not([disabled])").first().attr("selected", "selected"); 

Логика в том, что мы проверяем каждый <option> если это внутренний текст не начинается с --. Если это так, то это категория (согласно вашему снимку экрана), и мы отключили этот параметр.
Последнее, что нужно иметь в виду, это то, что нам нужно выбрать вариант без отключения после этого, иначе категория будет автоматически выбрана при загрузке сайта.

См. fiddle.

+0

Спасибо Basti, но список стран генерируется скриптом php на сайте и что-то нужно в javascript, чтобы отключить эти параметры, –

+0

Спасибо, Basti за помощь! –

+0

@ user3186589 Доступен jQuery или вам нужен чистый JS? Кроме того, это ценная информация, которая вам нужна в javascript. Вы должны были добавить это к вопросу. –

Смежные вопросы