Галочка на эксклюзивном предмете в Javascript - PullRequest
1 голос
/ 05 января 2012

Привет! Я использую Titanium для создания таблицы строк, которую можно проверить.

Мне нужно написать некоторый код в Javascript, который позволяет проверять только одну строку, а когда проверяется одна, остальные не проверяются.

Я не беспокоюсь о титановой детали, а больше об общем решении.

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

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 05 января 2012

Живой пример: http://jsfiddle.net/ztm82/

function doit(table, event) {
    if (event.target.nodeName === "INPUT"
        && event.target.type === "checkbox"
        && event.target.checked)
    {
        var rows = table.tBodies[0].rows;

        for (var i = 0; i < rows.length; i++)
        {
            var input = rows[i].getElementsByTagName("INPUT")[0];

            if (input !== event.target)
            {
                input.checked = false;
            }
        }
    }
}
1 голос
/ 05 января 2012

Попробуйте что-то вроде этого:

var checkboxes = document.querySelectorAll('#myTable input[type="checkbox"]'),
    checkboxClickHandler,
    i;
checkboxClickHandler = function (event) {
    var i;

    // only uncheck if target is a checkbox which has been checked
    if (event.target.checked) {
        for (i = 0; i < checkboxes.length; i++) {

            // don't uncheck clicked box
            if (checkboxes[i] !== event.target) {
                checkboxes[i].checked = false;
            }
        }
    }
};
document.getElementById('#myTable').addEventListener('click', checkboxClickHandler, false);
0 голосов
/ 05 января 2012

Взаимоисключающие чекбоксы? Почему бы не использовать вместо этого переключатели (<input type='radio'>)? Вы бы получили это поведение бесплатно, и оно было бы более интуитивным для пользователей.

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