由于javascript验证问题,页面已回发

时间:2013-05-02 10:26:23

标签: c# javascript asp.net .net telerik

我正在使用asp.net,我设计了一个简单的表单

我正在进行javascript验证。

当任何文本框为空时,它应在标签

中显示错误

但遗憾的是,即使出现错误,我的网页每次都会回复

因此标签正在刷新并且没有显示错误消息

并且空白数据也会发布到服务器

因为,使用Telerik Controls,我正在呼叫的按钮:

<telerik:RadButton ID="btnSave" runat="server" Text="Save" OnClientClicked="validate" 
                    OnClientClicking="validate" onclick="btnSave_Click">

我的javascript代码:

    function validate() {

        var flag = 0;
        var errorText = "";
        if (document.getElementById('txtPartyCode').innerHTML == "") {
            errorText = errorText + "\n Please Enter PartyCode";
            flag = 1;
        }

        if (document.getElementById('txtEmailId').innerHTML == "") {
            errorText = errorText + "\n Please Enter EmailID";
            flag = 1;
        }


        if (document.getElementById('txtPhoneNumber').innerHTML == "") {
            errorText = errorText + "\n Please Enter Phone Number";
            flag = 1;
        }



        if (document.getElementById('txtBrockrage').innerHTML == "") {
            errorText = errorText + "\n Please Enter Brockrage";
            flag = 1;
        }


        if (document.getElementById('txtTax').innerHTML == "") {
            errorText = errorText + "\n Please Enter Tax";
            flag = 1;
        }

        document.getElementById('lblErrors').innerHTML = errorText;

        if (flag == 1) //{

            //alert(errorText); 
           //return true;
        //}
        //else
            return true;

    }

</script>

javascript函数中是否有错误???

3 个答案:

答案 0 :(得分:3)

<telerik:RadButton runat="server" ID="btnTest" OnClientClicking="validate" />

javascript将是

function validate(sender, args)
{

    // your code 


    if (flag == 1)
    {
        args.set_cancel(true);
    }
    else
    {
        args.set_cancel(false);
    }
}
  

set_cancel(shouldCancel) - 设置一个bool值,指示是否   该活动将被取消。设置为true表示事件将是   取消。

答案 1 :(得分:2)

对于服务器控件,您可能需要使用&lt;%= lblErrors.ClientID%&gt;因此它应该看起来像

document.getElementById('<%= lblErrors.ClientID%>')

我不确定您是如何调用此函数的,但如果验证失败则应返回false。即

if (flag == 1)
  return false;

如果您在服务器按钮的onclient上单击它,那么它应该看起来像

OnClientClick="return validate();"

我希望它有所帮助!

修改

在这种情况下,您可能需要调用它,如下所示(注意:我还没有测试过它)

<telerik:RadButton ID="btnSave" runat="server" Text="Save" OnClientClicked="OnClientClicked" onclick="btnSave_Click">

<script type="text/javascript">
    function OnClientClicked(button, args)
    {
        if (validate())
        {
            button.set_autoPostBack(true);
        }
        else
        {
            button.set_autoPostBack(false);
        }
    }
</script>

您可能想要查看Telerik按钮事件here

答案 2 :(得分:1)

查看here了解详细信息,您可以尝试更改上一个if块,如下所示:

 function validate(sender, args)
 {
   // your code for validation 
  if (flag == 1)
    {
    args.set_cancel(false);
    }
    else
    {
        args.set_cancel(true);
    }
  }

更新您的代码,如:

<telerik:RadButton ID="btnSave" runat="server" Text="Save" 
OnClientClicked="validate"
onclick="btnSave_Click">