Javascript: проверка динамически созданного элемента управления списком переключателей в ASP.NET - PullRequest
0 голосов
/ 27 мая 2009

У меня есть страница ASPX, где при загрузке страницы я динамически создаю некоторые элементы управления списком переключателей и отрисовываю их в браузер. У меня будет 2 элемента списка в каждом списке переключателей. Один - Да, а второй - Нет. Число Список радио-кнопок может быть n.Теперь в моем коде java-скрипта я хочу знать, какая радио-кнопка нажата. Я уже использую jQuery. Любой простой способ справиться с этим?

Мой HTML-код, отображаемый в браузере, равен

<table border="0" id="tblQuestions">
    <tr>
        <td>Do you have a valid passport ?</td>
    </tr><tr>
        <td><table id="answer-1" border="0">
            <tr>
                <td><input id="answer-1_0" type="radio" name="answer-1" value="1" /><label for="answer-1_0">Yes</label></td>
            </tr><tr>
                <td><input id="answer-1_1" type="radio" name="answer-1" value="0" /><label for="answer-1_1">No</label></td>
            </tr>
        </table></td>
    </tr><tr>
        <td>Are you married ?</td>
    </tr><tr>
        <td><table id="answer-2" border="0">
            <tr>
                <td><input id="answer-2_0" type="radio" name="answer-2" value="1" /><label for="answer-2_0">Yes</label></td>
            </tr><tr>
                <td><input id="answer-2_1" type="radio" name="answer-2" value="0" /><label for="answer-2_1">No</label></td>
            </tr>
        </table></td>
    </tr>
</table>

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 27 мая 2009

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

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

Вопросы генерируются динамически с использованием серверного элемента управления, который выдает простой xhtml. Я называю все варианты с одинаковым именем (Q1, Q2 ...) и идентифицирую их как (Q1a, Q1b ...)

Чтобы изменить его для своих целей, возможно, вы могли бы построить список выбранных опций в цикле j, то есть добавить пары имя-значение, где есть оператор "break".

// Grabs all inputs - radio, checkbox, text, buttons and lists -sticks them in an array
allInputs = document.getElementsByTagName("input");
var last = "NameUnlikelyToBeUsedAsAnElementName";

// walk through the array
for (i = 0; i< allInputs.length; i++)
{
    var input = allInputs[i];
    if (input.name == last) continue; // if this object name is the same as the last checked radio, go to next iteration


    // checks to see if any  one of  similarly named radiobuttons is checked 
    else if (input.type == "radio" )
    {    
        last = input.name;  
        var radios = document.getElementsByName(input.name);
        var radioSelected=false;

         //iterate over question options
        for (j=0; j < radios.length; j++)
        {
            if(radios[j].checked)
            {
               radioSelected=true;
               break; // Found it, proceed to next question 
            }
        }
        if (!radioSelected) // no option selected
        {       // warn user, focus question
            alert("You did not answer question " + input.id.substring(0,input.id.length-1));
            input.focus();
            return false;
        }                   
    }

}

return true;
0 голосов
/ 27 мая 2009

Предполагается, что у вас уже есть jquery на вашей странице.

определяет класс для элементов переключателя, в основном ваш клиентский HTML должен выглядеть как <input id="answer-2_1" type="radio" name="answer-2" value="0" class="myrdo" />

теперь, в своем коде js, просто подключите обработчик событий к классу

$(".myrdo").bind("click",function(){if($(this).attr("checked")==true) {alert($(this).val);} });

вышеуказанная команда просто предупредит значение выбранного переключателя.

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