Я работаю над плагином WordPress. В админ-панели у меня есть fieldset и флажок. Я хотел бы переключить набор полей между отключенным / включенным, установив / сняв флажок. Вот то, что я имею до сих пор, но это не похоже на работу.

HTML

<!-- This is the checkbox -->
<label>
    <input class="checkbox" type="checkbox" onchange="toggleDisable(this);" id="check"/> 
    enable
</label>

<!-- This is the field set -->
<fieldset id="field_set">
    <legend>Field-Set</legend>

    <label for="sel">selectBox</label>
    <select id="sel">
        <option value="posts">Posts</option>
        <option value="terms">Terms</option>
    </select>

    <label for="1">input</label>
    <input type="text" value="text" id="1" />

    <label for="2">input</label>
    <input type="text" value="text" id="2" />

</fieldset>

JavaScript

function toggleDisable(checkbox) {
    var toggle = document.getElementById("field_set");
    checkbox.checked ? toggle.disabled = false : toggle.disabled = true;
}

Событие не запускается, и с набором полей ничего не происходит.
Да, и вот вам скрипка.

1
Yoav Kadosh 23 Янв 2013 в 09:45

2 ответа

Лучший ответ

Ваш код в порядке. Проблема в твоей скрипке. Когда вы выбираете onLoad и не No library, это означает, что ваш код JavaScript будет помещен в закрытие window.onload:

window.onload = function() { /* your code will go here */ }

Таким образом, в этом случае определяемая вами функция становится локальной областью действия, которая недоступна для остальной части страницы. Поэтому, чтобы решить вашу проблему, вам просто нужно выбрать no wrap (head), например. Посмотри это:

http://jsfiddle.net/AY3Ka.

1
dfsq 23 Янв 2013 в 05:57

Попробуйте это: http://jsfiddle.net/eVqL4/

function toggleDisable(checkbox) {
    var toggle = document.getElementById("field_set");
    $(toggle).prop('disabled', $(checkbox).prop('checked'));
}
1
Ayman Safadi 23 Янв 2013 в 05:52