我有一个带有postbackurl和onclientclick脚本的图像按钮。当我添加onclientclick代码时,如果我的javascript验证通过(也就是返回true),页面似乎只执行回发(屏幕似乎刷新自己),而不是发布到postbackurl。任何想法为什么会发生这种情况?
样品:
<asp:ImageButton ID="imgSendInfo" runat="server" SkinID="SendInfo" PostBackUrl="MyUrlOnAnotherSite" onClientClick="javascript:return onFormSubmit(this.form);return document.MM_returnValue" />
更新:
好的,所以我决定改变我现在调用的JS函数,因为调用Multiple函数肯定没有帮助。这是我更新的代码。我现在正在做的就是验证单个文本框并返回true或false。即使这个简单的函数也会导致永远不会调用回发URL。它是否与我试图调用函数返回true或false的事实有关?
我的验证功能:
function valForm() {
if (document.getElementById('FName').value == '') {
alert('no');
return false;
}
else {
alert('yes');
return true;
}
}
我的ImageButton:
<asp:ImageButton ID="imgSendInfo" runat="server" SkinID="SendInfo" PostBackUrl="SetOnCodeBehind" onClientClick="javascript:return valForm();" />
答案 0 :(得分:0)
你知道你的onClientClick js-function返回两次吗?永远无法联系到return document.MM_returnValue
。
您的PostBackUrl页面是否在您的应用程序中?您甚至可以在服务器端验证上一页:
If Page.PreviousPage.IsValid Then
' Handle the post back
Else
Response.Write("Invalid")
End If
答案 1 :(得分:0)
确定了解决方法。我从onclientclick中删除了return语句,因为返回的内容正在回复。然后我向页面添加了requiredfieldvalidators,但我没有显示任何文本。这样,就会发生2组验证(booo),但是第一组显示我的警报消息(这是客户端想要执行验证的方式),第二组会阻止表单发布。
我的图片按钮:
<asp:ImageButton ID="imgSendInfo" runat="server" SkinID="SendInfo" PostBackUrl="SetOnCodeBehind" ValidationGroup="enroll" CausesValidation="true" onClientClick="javascript:onFormSubmit(this.form);document.MM_returnValue;" />
我的requiredfieldvalidation组:
<asp:RequiredFieldValidator ID="reqVal1" runat="server" ErrorMessage="" ValidationGroup="enroll" ControlToValidate="FName" InitialValue="" />
<asp:RequiredFieldValidator ID="reqVal2" runat="server" ErrorMessage="" ValidationGroup="enroll" ControlToValidate="LName" InitialValue="" />