如何在ClientValidationFunction上获取" ControlTovalifice"属性?[英] How to get the 'controlToValidate' property on ClientValidationFunction?

本文是小编为大家收集整理的关于如何在ClientValidationFunction上获取" ControlTovalifice"属性?的处理方法,想解了如何在ClientValidationFunction上获取" ControlTovalifice"属性?的问题怎么解决?如何在ClientValidationFunction上获取" ControlTovalifice"属性?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

可以说我有这个代码.

<asp:TextBox ID="TextBox1" runat="server" />

<asp:CustomValidator ID="CustomValidator1" runat="server"
    ClientValidationFunction="ValidationFunction1"
    ControlToValidate="TextBox1"
    Display="Dynamic" />

和验证功能:

function ValidationFunction1(sender, args)
{
}

我想知道,在功能内部,我是否可以得到控制来验证以下内容:

var v = sender.ControlToValidate;

推荐答案

实际sender.controltovalidate给出控件的ClientID.所以这似乎是一个解决方案.

function ValidationFunction1(sender, args){
    var v = document.getElementById(sender.controltovalidate);
}

我尝试过,对我有用.请通知它是否有效.

其他推荐答案

未经验证,只是一个提示:

var v = document.getElementById('<%=CustomValidator1.FindControl(CustomValidator1.ControlToValidate).ClientID>%');

当然,您可以简单地做:

var v = document.getElementById('<%=TextBox1.ClientID%>');

如果您确切地知道自己正在验证的内容.当要验证的控件是动态设置的,而您不知道将是哪一种时,第一个方法是好的.

也可能会返回null,因此您也需要对此进行测试以避免例外.

希望这会有所帮助.

其他推荐答案

这是我对C#中的服务器端解决方案的看法,以模仿上述答案,适用于感兴趣的任何人:

<asp:TextBox ID="txtStudentComments" runat="server" 
  Rows="8" Width="100%" 
  ToolbarCanCollapse="False" ValidationGroup="vg1" />
<asp:CustomValidator ID="cv1" runat="server" ControlToValidate="txtStudentComments" 
ErrorMessage="THESE COMMENTS DO NOT SEEM RIGHT. PLEASE REVIEW THEM AGAIN!" SetFocusOnError="true" 
Font-Bold="True" Font-Size="Medium" ValidationGroup="vg1" OnServerValidate="cv1_ServerValidate"></asp:CustomValidator>

和服务器上:

//validate of the comment contains some specific words which imply the TET has not reviewed the comments!
    protected void cv1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        CustomValidator cv = (CustomValidator)source;
        GridViewRow gvRow = (GridViewRow)cv.NamingContainer;
        TextBox editor = (TextBox)gvRow.FindControl("txtStudentComments");

        if (editor.Text.ToUpper().Contains("FACILITATOR TO INSERT COMMENTS HERE PLEASE"))
            args.IsValid = false;
        else
            args.IsValid = true;
    }

这两条线是它的关键.

    CustomValidator cv = (CustomValidator)source;
    GridViewRow gvRow = (GridViewRow)cv.NamingContainer;

在我的情况下,NamingContainer将是GridViewrow,但根据您的程序,这可能是您的整个页面.无论哪种方式,它都可以使我找到所需的控件,相对于ControlTovalidate对象,如前所述,该对象将返回客户端.

本文地址:https://www.itbaoku.cn/post/1793763.html