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

3

这似乎应该非常简单,但是我卡住了。我编写了一些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为“checked”和gblNonYapperChecked为空,非喋喋不休者仍然默认在Web浏览器中被选中。
我做错了什么?
更新:以下是实际在浏览器中显示的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='' />    


将名称设置为相同,它是区分大小写的。 - Adam
感谢您对名称的建议;然而,它并不能解决问题。 - Vivian River
@Adam - 名称区分大小写,但在这种情况下应该无关紧要。 - Andrey
尝试将此代码放入OnPreRender事件处理程序中 - 现在我假设它在OnLoad或OnClick中,对吗? - Andrey
3个回答

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属性。


3

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接