Снимите все флажки в группе, если флажок «Любой» используется, чтобы работать больше не работает - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть этот JS, который некоторое время работал нормально, и я понятия не имею, почему он больше не работает сейчас. Предполагается снять флажок Любой (установлен по умолчанию), когда установлен любой другой флажок, и снять флажок с любого, если установлен флажок.

/**
 * Define a set of checkbox groups
 */
var locations = new Array('A', 'P', 'PR', 'GR', 'MC', 'F', 'S', 'L', 'LU', 'E');
/**
 * Checking the "anyId" checkbox clears the rest of the group.  Checking any other clears the "anyId" checkbox.
 */
function toggleBoxes( el, anyId, group ) {
    var i;
    if ( el.id == anyId ) {
        for( i = 0; i < group.length; i++ ){
            var cb = document.getElementById(group[i]);
            cb.checked = false;
        }
    } else {
        var cb = document.getElementById(anyId);
        cb.checked = false; 
    }
}

А это HTML

<div class="input">
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='anyLocation' name="ts-in_pr" value="any" type="checkbox" checked>Any</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='A' class="geoloc" name="ts-in_pr[]" value="AR" type="checkbox">Ao</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='P' class="geoloc" name="ts-in_pr[]" value="PI" type="checkbox">Pa</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='PR' class="geoloc" name="ts-in_pr[]" value="PO" type="checkbox">Po</p>      
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='GR' class="geoloc" name="ts-in_pr[]" value="GR" type="checkbox">Gr</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='MC' class="geoloc" name="ts-in_pr[]" value="MC" type="checkbox">MC</p>                                                                  
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='F' class="geoloc" name="ts-in_pr[]" value="FI" type="checkbox">Fi</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='S' class="geoloc" name="ts-in_pr[]" value="SI" type="checkbox">Si</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='L' class="geoloc" name="ts-in_pr[]" value="LI" type="checkbox">Li</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='LU' class="geoloc" name="ts-in_pr[]" value="LU" type="checkbox">Lu</p>
            <p><input onClick='toggleBoxes(this, "anyLocation", locations)' id='E' class="geoloc" name="ts-in_pr[]" value="El" type="checkbox">E</p> 
        </div>

Что происходит, так это то, что Any не проверяется нормально, когда установлен любой другой флажок, однако, когда он проверен обратно, он снимает флажки только с трех полей прямо ниже (значения Ao, Pa и Po). Все остальные проверяются, и когда они сняты вручную, они также снимают флажок Любой (если он был отмечен). У меня был этот JS на заказ, и я понятия не имею, что с ним не так. Заранее спасибо за любую помощь.

Ответы [ 4 ]

0 голосов
/ 15 февраля 2011

Ваш код в порядке. Я проверил это локально и без проблем.

0 голосов
/ 15 февраля 2011

Я полагаю, у вас есть дубликат идентификатора где-то в документе (возможно, "GR"). Попробуйте использовать префикс, чтобы избежать этой проблемы.

0 голосов
/ 15 февраля 2011

Вот рабочий пример.Я немного упростил параметры вашей функции.Код, который я вижу, не нуждается во втором и третьем параметре, так как они постоянны.

http://jsfiddle.net/srEuM/

Bob

0 голосов
/ 15 февраля 2011

Ваш код JavaScript должен быть в заголовке или в верхней части тега body, но в любом случае ваша переменная locations должна быть глобальной, так как каждый раз, когда вы вызываете toggleBoxes, locations будет неопределенным.

Проверьте пример здесь: http://jsfiddle.net/ArtBIT/DBanG/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...