我在服务器端代码中将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,则应触发服务器端点击事件。 "ValidateData()"函数用于验证表单中的条目。
这段代码在IE中运行良好。但是在Firefox中,两个事件都没有触发。如果我注释掉“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);
火狐浏览器没有调用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;
}
switch (ddlOND.value) { }
代替多个 if-elseif。 - abatishchev