0

我正在研究 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函数有什么错误???

4

3 回答 3

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) - 设置一个布尔值,指示事件是否将被取消。设置为 true 意味着事件将被取消。

于 2013-05-02T10:45:59.343 回答
2

对于服务器控件,您可能希望使用 <%= lblErrors.ClientID%> ,因此它应该看起来像

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

我不确定你是如何调用这个函数的,但如果验证失败,你应该返回 false。IE

if (flag == 1)
  return false;

如果您在服务器按钮的 onclientclick 中调用它,那么它应该看起来像

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 按钮事件

于 2013-05-02T10:33:59.340 回答
1

查看此处了解更多详细信息,您可以尝试更改最后一个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">
于 2013-05-02T10:33:00.883 回答