Вопрос по jquery – jQuery - проверка всех радиогрупп

6

Я хотел бы перебрать несколько (динамических) групп переключателей с помощью jQuery, и если какой-либо из них не сделал выбор, он выдает ошибку и останавливает отправку формы.

Вот мои усилия:

$("form").submit(function() {
    $(":radio").each(function(){
        if($(this).val().length == 0) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});

Но этовсегд игнорирует оператор if, который останавливает отправку, как будто $ (this) на самом деле не является значением переключателей?

Вот jsFiddle:http: //jsfiddle.net/aVVW9

Любая помощь будет очень признательна, спасибо!

Ваш Ответ

3   ответа
0

а, когда вы знаете точное количество переключателей.

var x = 0;

$(":radio").change(function() {
x = x + 1;

if (x == count) {

//do smth

}

});
10

лючателей, а затем извлекайте имя группы переключателей, используя:checked, чтобы увидеть, проверен ли какой-либо член этой группы. Простое логическое значение останавливает ошибки после обнаружения первой отсутствующей проверки.

$("form").submit(function() {
    var submitme = true;
    $(':radio').each(function() { // loop through each radio button
        nam = $(this).attr('name'); // get the name of its set
        if (submitme && !$(':radio[name="'+nam+'"]:checked').length) { 
        // see if any button in the set is checked
            alert(nam+' group not checked');
            submitme = false;
        }
    });
    return submitme; // cancel the form submit
});        ​

http: //jsfiddle.net/mblase75/aVVW9/5

Большое спасибо, это превосходно и показывает предупреждение только тогда, когда ничего не проверено, но есть ли способ каким-то образом упростить код, удалив имя, а также возврат false; под предупреждением фактически не останавливает отправку формы: Nick
Конечно, вы можете изменить сообщение оповещения на что угодно. Вы также можете добавитьerror класс для ярлыков радиогруппы, или что-то, чтобы выделить кнопки, которые необходимо проверить: Jsfiddle.net / mblase75 / aVVW9 / 6 Blazemonger
Ах, огромное спасибо за редактирование - это прекрасно: D Nick
Как редактировать, если я хочу, чтобы пользователь видел все ошибки в одном предупреждении? со вторым редактированием, когда ошибка исправлена, где редактировать, чтобы изменить цвет bgcolor на белый? Interfaith
1
$("form").submit(function() {
    $(":radio", this).each(function(){
        if(!this.checked) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});

ил

$("form").submit(function() {
    if($(':radio:not(:checked)', this).length) {
       alert('Not selected all radios');
       return false;
    }
});

Проверь это Демо. Здесь для простоты я обертываю каждую радиогруппу в div с классомradio_group и перебери их.

Спасибо, но то же самое (кстати, я добавил в! И попробовал второй код: () Nick
@ Ник проверь мое новое обновление thecodeparadox
Спасибо, но это всегда возвращает false, интересно, потому что в группах есть переключатели, которые не отмечены? Nick
@ Ник проверь мое обновление thecodeparadox
@ Nich, почему проблемная демонстрация работает просто отлично, в чем твоя проблема? thecodeparadox

Похожие вопросы