看起来这应该非常简单,但我被卡住了。我写了一些输出一对单选按钮的 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 是“”时,在网络浏览器中默认情况下始终选择 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='' />
最佳答案
请注意,HTML 的“checked”属性通常由存在或不存在来决定。有关规范,请参阅 http://www.w3.org/TR/html401/interact/forms.html#adef-checked
。
特别是这意味着如果你想检查它你 cna checked
, checked=true
, checked=checked
等等。因此,如果您不想选中复选框,您想要的是根本没有 checked 属性。
我建议结构如下:
<input type='radio' name='Yapper' id='chkNonYapper' value='nonYapper' <%=registrationUser.isYapper?"":"checked='checked'" %> />
这应该消除完全依赖于 isYapper bool 值的 checked 属性。
关于asp.net - 为什么我在选择网页上的默认单选按钮时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796550/