为什么我在网页上选择默认单选按钮时遇到问题?

时间:2011-01-25 17:03:18

标签: asp.net html radio-button

这似乎应该是死的简单,但我被困住了。我写了一些输出一对单选按钮的asp.net代码:

<p>
<label for='chkYapper'>Yapper</label>
<input type='radio' name='yapper' id='chkYapper' value='yapper' checked='<%=gblYapperChecked %>' />
<br />
<label for='chkNonYapper'>non-Yapper</label>
<input type='radio' name='Yapper' id='chkNonYapper' value='nonYapper' checked='<%=gblNonYapperChecked %>' />    

        if (registrationUser.isYapper == 1)
        {
            gblYapperChecked = "checked";
            gblNonYapperChecked = "";
        }
        else
        {
            gblYapperChecked = "";
            gblNonYapperChecked = "checked";
        }

正如所料,我有两个单选按钮,“Yapper”和“Non-Yapper”。但是,即使我通过我的代码并且看到gblYapperChecked被“检查”并且gblNonYapperChecked为“”,默认情况下总是在Web浏览器中选择Non-Yapper。

我做错了什么?

更新以下是实际显示在浏览器中的HTML代码。应该选择“Yapper”,而是选择“Non-Yapper”。

<p>
<label for='chkYapper'>Yapper</label>
<input type='radio' name='yapper' id='chkYapper' value='yapper' checked='checked' />
<br />
<label for='chkNonYapper'>non-Yapper</label>
<input type='radio' name='yapper' id='chkNonYapper' value='nonYapper' checked='' />    

3 个答案:

答案 0 :(得分:5)

请注意,HTML“checked”属性通常由存在或不存在来确定。有关规范,请参阅http://www.w3.org/TR/html401/interact/forms.html#adef-checked

具体而言,这意味着如果您想要检查它,您可以checkedchecked=truechecked=checked等等。所以你想要的是,如果你不想选中复选框,根本就没有checked属性。

我会建议结构如:

<input type='radio' name='Yapper' id='chkNonYapper' value='nonYapper' <%=registrationUser.isYapper?"":"checked='checked'" %> />

这应该完全取决于你的isYapper布尔值来消除你的checked属性。

答案 1 :(得分:3)

“checked”属性很奇怪,它没有任何价值。如果选中单选按钮,则在标记中单独包含“已检查”属性。如果未选中,请不要执行任何操作。见这里:

http://www.htmlcodetutorial.com/forms/_INPUT_TYPE_RADIO.html

答案 2 :(得分:0)

您是在创建控件之前或之后设置dblYapperChecked吗?就个人而言,我会在服务器端运行单选按钮并直接在控件上设置选中的值,但如果值设置得足够快,您的方法应该可以正常工作(尝试将它们初始化为预期值,看看是否有所不同...)