我是ASP.NET编程的新手。如果未点击RadioButton
,我需要显示一条消息。我已经为onclick
事件编写了JavaScript以处理单个选择。
我的代码:
if(rbTest.Checked == true)
{
//my code
}
else
{
string message = "Please select case to download";
lnkbtnDownload.Attributes.Add("onclick", "alert('" + message + "');return false;");
}
即使我选择了一个单选按钮,它也会一直显示警告信息。为什么呢?
答案 0 :(得分:4)
您必须检查lnkbtnDownload的onclick处理程序中是否单击了单选按钮。
lnkbtnDownload.Attributes.Add("onclick","if(!document.getElementById('rbTest').checked))alert('message')");
答案 1 :(得分:2)
您需要了解服务器端代码和客户端代码之间的区别。您的代码是用C#编写的,它在服务器上运行。以下是我假设发生的事情:
一个。您的页面首次呈现,用户不会选择相关的单选按钮。然后他/她提交页面(可能通过LinkButton)。
湾您的页面提交,您粘贴的代码在服务器上运行。检查是否检查了radiobutton。如果没有,则向LinkButton添加一个属性,以便在单击LinkButton时,它将发出警报。
℃。您的页面在回发后呈现,并将新属性添加到LinkButton。
d。单击LinkButton,您将收到包含该消息的警报。由于您已将其设置为返回false,因此页面将不会再次提交,并会继续向您显示警报。
你看到这里发生了什么吗?您的警报条件需要在客户端上进行检查。 @Phoenix提供的片段应该是一个很好的起点。
答案 2 :(得分:0)
使用
var r = documet.getElementById("rbTest")
然后与r[0].checked
使用index,因为radiobutton r可以是一个数组
答案 3 :(得分:0)
这是相对丑陋但可以解决问题:
<script>
var rbSelected = false;
</script>
<form onsubmit="if (!rbSelected) { alert('You must select something!";return false}">
<input type="radio" name="rbTest" onclick="rbSelected=true" value=1>a
<input type="radio" name="rbTest" onclick="rbSelected=true" value=2>b
<input type="radio" name="rbTest" onclick="rbSelected=true" value=3>c
<input type="submit value="Submit">
</form>
如果你有多个单选按钮(我希望你这样做),那么你真的不能使用getElementById而没有所有这些额外的循环逻辑等......这就避免了循环。