这似乎应该是死的简单,但我被困住了。我写了一些输出一对单选按钮的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='' />
答案 0 :(得分:5)
请注意,HTML“checked”属性通常由存在或不存在来确定。有关规范,请参阅http://www.w3.org/TR/html401/interact/forms.html#adef-checked
。
具体而言,这意味着如果您想要检查它,您可以checked
,checked=true
,checked=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吗?就个人而言,我会在服务器端运行单选按钮并直接在控件上设置选中的值,但如果值设置得足够快,您的方法应该可以正常工作(尝试将它们初始化为预期值,看看是否有所不同...)