【发布时间】:2011-02-21 11:07:12
【问题描述】:
我在服务器端代码中的按钮上附加了 Onclientclick 事件,如下所示,
TopPanelButton.OnClientClick = string.Format("if(!ValidData({0},{1},{2},{3})) return false;", txtOD.ClientID, radCmbOD.ClientID, txtgetMe.ClientID, RadAjaxLoadingPanel1.ClientID);
此外,在 aspx 页面中为同一个按钮附加了 onClick 事件,
<asp:Button ID="TopPanelButton" runat="server" Text="Go"
CssClass="CBtn1" Width="30px" Height="21px" OnClick="TopPanelButton_Click" />
如果 onclientclick 返回 true,则应该触发服务器端 click 事件。调用“ValidateData()”函数来验证表单中的条目。
此代码在 IE 中运行良好。但在 Firefox 中,这两个事件都不是 firig。如果我评论“TopPanelButton.OnClientClick =...”代码,则 onClick 事件正在触发。
我可以在下面的代码中在哪里应用此代码Page.ClientScript.GetPostBackEventReference()。
TopPanelButton.OnClientClick = string.Format("if(!ValidData({0},{1},{2},{3})) return false;", txtOD.ClientID, radCmbOD.ClientID, txtgetMe.ClientID, RadAjaxLoadingPanel1.ClientID);
Firefox 没有调用 ValidData 函数。我将警报放在 javascript 中,但 Firefox 中未显示警报消息。但 IE 显示警告消息。
我的validData函数:
function ValidData(txtOND, ddlOND, txtgetMe, aPanel) {
alert("Entered");
if (!ValidNumber(txtgetMe)) {
aPanel.hide();
return false;
}
if (ddlOND.value == "Origin" || ddlOND.value == "Destination") {
if (!ValidOriginOrDestination(txtOND, ddlOND.value)) {
aPanel.hide();
return false;
}
}
else if (ddlOND.value == "O&D") {
if (!ValidOND(txtOND)) {
aPanel.hide();
return false;
}
}
if (ddlOND.value == "Region Starting with" || ddlOND.value == "Country Starting with" || ddlOND.value == "Budget Station Starting with") {
if (txtOND.value.length == 0) {
radalert("Enter a value for " + ddlOND.value);
aPanel.hide();
return;
}
}
aPanel.show();
return true;
}
【问题讨论】:
-
在 ValidData() 中似乎有些不正确,IE 可能更宽容。您可以发布 ValidData() 的代码吗?
-
使用可以使用
switch (ddlOND.value) { }代替多个if-elseif
标签: c# asp.net firefox code-behind onclientclick