Проверка JQuery и флажок Нажмите Функция - PullRequest
1 голос
/ 07 января 2011

У меня есть базовая функция щелчка по флажкам, которая позволяет пользователю устанавливать только один флажок в каждом наборе полей (есть четыре набора полей, каждый из которых содержит многочисленные флажки:

$(document).ready(function(){

$('input[type=checkbox]').click(function(){

    // get the fieldset class
    var fieldset = $(this).parents('fieldset').attr('class');

    // set the number of checked
    var numChecked = $('.'+fieldset+' input:checked').size();

    // if more than 1
    if(numChecked > 1){
        alert('Please select only one option per breakout session.')

$ (это) .attr ( 'проверено', ложь); }

}); 

Затем в форме есть функция отправки, которая подтверждает, что перед отправкой формы установлен хотя бы один флажок:

$('form[name=mainForm]').submit(function(){

    var error = '';

    // loop through each fieldset
    $('fieldset',this).each(function(){

        // set the number of checked for this fieldset
        var numChecked = $('input:checked',this).size();

        // if none are checked
        if(!numChecked){
            // set the error var
            error = 'At least one of your time sessions has no checkbox selected!';
            // add class to show user
            $(this).addClass('errorSessions');
        }
        else{
            $(this).removeClass('errorSessions');
        }

    });

    // if any errors, show them and don't allow the form to be submitted
    if(error.length){
        alert(error);
        return false;
    }

   $("#mainForm").validate();

Форма проверяется отлично, и все происходит безупречно в первый раз. Проблема в том, что если вы отправляете форму, происходит проверка и выдает ошибку «По крайней мере, на одном из ваших сеансов времени не установлен флажок!» - в этот момент, если вы продолжите выбирать несколько флажков в данном наборе полей, который изначально не был отмечен, он будет игнорировать функцию щелчка флажка и позволит вам выбрать более одного флажка в наборе полей.

Может кто-нибудь помочь с этим?

Ответы [ 2 ]

1 голос
/ 07 января 2011

Хорошо, я понял это.Ошибка связана со сценарием, добавляющим класс 'errorsessions' в набор полей, который изменяет уникальное имя класса набора полей.Добавляя уникальный идентификатор к каждому набору полей, а затем изменяя скрипт на ссылку .attr ('id');вместо .attr («класс»);проблема решена, и после добавления класса функция предупреждения при нажатии возобновилась.

0 голосов
/ 07 января 2011

Считаете ли вы использование переключателей, поскольку они есть для одного выбора?Таким образом, вам не нужно проверять множественный выбор, так как невозможно выбрать более одной радиокнопки в данной группе.

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