JQuery, переключатели, проверка и проблема индексов - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть набор радиокнопок с именем = "rb_Select".

Я добавил простую проверку радиокнопок, чтобы убедиться, что при аренде была выбрана 1 радиокнопка, но теперь я вижу, что у меня естьмой синтаксис - моя функция JavaScript, написанная неправильно.

По сути, я проверяю значения true / false в операторе if else.однако я понял, что если не выбрана ни одна радиокнопка, я получаю несколько ложных значений.Скажем, у меня есть 8 радио-кнопок, я получаю 8 окон предупреждений во время отладки.

Если я выберу 1 радио-кнопку, тогда я получу одну истину и 7 ложных.Но это не то, что я хочу.

То, что я хочу, это 1 правда, а не ложь.Я не уверен, какой синтаксис должен быть.Я явно делаю что-то не так.

Вот функция отправки:

var $ = jQuery;

$("#pError").hide();
$("#LocInfo").hide();

$(".submit-button").click(function() {

    var rb = document.getElementsByName('rb_Select');

    for (var i = 0; i < rb.length; i++)
    {
        if (rb[i].checked == true)
        {

        alert('Value=' + rb[i].value + 'TRUE');
        var myURL = rb[i].value;
        window.open(myURL);


        } else {

        alert('Value=' + rb[i].value + 'False');

        $("#pError").fadeIn();
        var fade_out = function() { $("#pError").fadeOut(); }
            setTimeout(fade_out, 3000);
        };

    }
});

1 Ответ

1 голос
/ 18 апреля 2011

Вы можете использовать селектор input[type='radio'][name='rb_Select']:checked с методом length , чтобы увидеть, выбрано ли радио.

Попробуйте:

  var $ = jQuery;

    $("#pError").hide();
    $("#LocInfo").hide();

    $(".submit-button").click(function() {

        var radios = $("input[type='radio'][name='rb_Select']:checked");
        if(radios.length > 0){
            alert('Value=' + radios.val() + 'TRUE');
            window.open(radios.val());
        }       else{

            alert('Value=' + radios.val()+ 'False');

            $("#pError").fadeIn();
            var fade_out = function() { $("#pError").fadeOut(); }
                setTimeout(fade_out, 3000);
            };
        }
    });
...