如何在提升onClick事件之前使用图像按钮在ASP.NET中验证表单?

时间:2012-12-27 06:11:11

标签: c# asp.net

这可能是一个愚蠢的问题,但我在这里是一个初学者......

我在asp.net中创建了一个表单,并且所有字段都使用验证控件点击图像按钮进行验证。它正常工作。之后我向按钮添加了一个事件。这是该按钮的代码。 / p>

<asp:ImageButton ID="Submit" runat="server" OnClick="submit_Clicked" ValidationGroup="AddSchoolValidationGroup" CausesValidation="true" ImageUrl="~/Styles/images/submit-btn.png" OnClientClick="submitClicked" />

该事件的目的是将表单中的所有值提交到数据库。我的问题是,在将onClick事件添加到按钮后,验证尚未发生。我希望这些onClick事件仅在表格已经成功验证。任何人都可以指导我..谢谢你。

4 个答案:

答案 0 :(得分:2)

确保您对所有验证控件使用相同的验证组。 此外,您可以使用OnClientClick事件来调用验证。

<asp:ImageButton ID="Submit" runat="server" OnClick="submit_Clicked" ValidationGroup="AddSchoolValidationGroup" CausesValidation="true" ImageUrl="~/Styles/images/submit-btn.png"  OnClientClick="return Page_ClientValidate('AddSchoolValidationGroup');"  />

答案 1 :(得分:1)

您可以使用javascript功能

    function validateForm() {
        if (document.getElementById('txtName').value == '') 
         { 
             ValidatorEnable(document.getElementById("rfvName"), true) // rfvName is id of validator
               return false; }
    }

并在客户端点击图片按钮

调用该功能
   <asp:ImageButton ID="Submit" runat="server" OnClientClick="validateForm();" OnClick="submit_Clicked" ValidationGroup="AddSchoolValidationGroup" CausesValidation="true" ImageUrl="~/Styles/images/submit-btn.png" /> 

答案 2 :(得分:1)

您需要在提交前验证页面。请为按钮添加属性。

protected void Page_Load(object sender, EventArgs e)
{
   Submit.Attributes.Add("onclick", "javascript:if(Page_ClientValidate('AddSchoolValidationGroup')){return true;}else{return false;}");
}

由于你在onclient点击中有一个方法“submitClicked”,你可以调用相同的内部Page_ClientValidate并删除现有的“OnClientClick”属性。

protected void Page_Load(object sender, EventArgs e)
{
   Submit.Attributes.Add("onclick", "javascript:if(Page_ClientValidate('AddSchoolValidationGroup')){submitClicked(); return true;}else{return false;}");
}

答案 3 :(得分:0)

OnClientClick="submitClicked"替换为 OnClientClick="return submitClicked();"

function submitClicked()
{
    if (document.getElementById('txtname') != '') {
        return true;
    }
    else {
        alert('Please Enter Name');
        return false;
    }
}

因此,在验证所有验证之前,不会调用服务器端事件。