onclientclick的imagebutton没有触发onclick事件

时间:2011-01-07 21:44:34

标签: asp.net

我有一个带有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();" />

2 个答案:

答案 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

有关详情:MSDN LinkButton.PostBackUrl

答案 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="" />