Javascript:在ASP.NET中验证动态创建的单选按钮列表控件

时间:2009-05-27 11:25:35

标签: javascript jquery validation radio-button

我有一个ASPX页面,在页面加载中我动态创建一些单选按钮列表控件并呈现给浏览器。我将在每个单选按钮列表中有2个列表项。一个是是,第二个是否。单选按钮列表可以是n.Now在我的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 个答案:

答案 0 :(得分:3)

以下代码并未专门回答您的问题,但可能有所帮助。我会为你修改它,但我现在没有时间。

我在考试中使用此功能,以警告用户某个特定问题没有选定的答案。

问题是使用发出普通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;

答案 1 :(得分:0)

假设您的页面中已包含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);} });

上述命令将仅提醒所选单选按钮的值。