ASP.NET中的警报消息

时间:2009-04-28 12:52:47

标签: c# asp.net .net-2.0

我是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;");
}

即使我选择了一个单选按钮,它也会一直显示警告信息。为什么呢?

4 个答案:

答案 0 :(得分:4)

您必须检查lnkbtnDownload的onclick处理程序中是否单击了单选按钮。

lnkbtnDownload.Attributes.Add("onclick","if(!document.getElementById('rbTest').checked))alert('message')");

答案 1 :(得分:2)

您需要了解服务器端代码和客户端代码之间的区别。您的代码是用C#编写的,它在服务器上运行。以下是我假设发生的事情:

一个。您的页面首次呈现,用户不会选择相关的单选按钮。然后他/她提交页面(可能通过LinkBut​​ton)。

湾您的页面提交,您粘贴的代码在服务器上运行。检查是否检查了radiobutton。如果没有,则向LinkBut​​ton添加一个属性,以便在单击LinkBut​​ton时,它将发出警报。

℃。您的页面在回发后呈现,并将新属性添加到LinkBut​​ton。

d。单击LinkBut​​ton,您将收到包含该消息的警报。由于您已将其设置为返回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而没有所有这些额外的循环逻辑等......这就避免了循环。

参见示例:http://jsbin.com/edoke