0

我有一个带有调用客户端验证脚本的 CustomValidation 控件的 ASP.NET 文本框。

<asp:TextBox ID="txtSubsContrRbtAmt" runat="server" 
                        CssClass="textEntry NumericInput" Width="150px"
                        Text="" onKeyUp="SumValues();" MaxLength="16"></asp:TextBox>


<asp:CustomValidator ID="cvalSubsContrRbtAmt" runat="server" ClientValidationFunction="ValidatetxtSubsContrRbtAmt"
                        ControlToValidate="txtSubsContrRbtAmt" CssClass="errlable" ErrorMessage="Max Decimals = 7"
                        SetFocusOnError="True" ValidationGroup="CarbsAdd"></asp:CustomValidator>

这是客户端脚本:

function ValidatetxtSubsContrRbtAmt(source, args) {

    var txtSubsContrRbtAmt = document.getElementById("<%=txtSubsContrRbtAmt.ClientID%>");
    var amount = txtSubsContrRbtAmt.value;

    args.IsValid = ValidAmount(amount);

    if (!args.IsValid)
        txtSubsContrRbtAmt.focus();
}

function ValidAmount(amount) {

    if (isNumber(amount)) {
        return (RoundToXDecimalPlaces(amount, 7) == amount);
    }
    else {
        return true;
    }  

在 ValidatetxtSubsContrRbtAmt 函数中,“source”参数是 CustomValidator。该控件具有属性“ControlToValidate”。如果可以的话,我可以以编程方式从该控件中检索值,而不必具有单独的函数来验证每个文本框。

jQuery 在这一点上对我来说太多了,我正在寻找一种简单的旧 Javascript 方法,拜托。

4

2 回答 2

0

您不必获取文本框。您可以从 args.Value 中获取值。如果您设置了焦点,则应自动设置焦点SetFocusOnError="true"

function ValidatetxtSubsContrRbtAmt(source, args) {

    var amount = args.Value;

    args.IsValid = ValidAmount(amount);
}
于 2012-08-02T07:30:30.660 回答
0

您应该能够从源对象访问控件。

function ValidatetxtSubsContrRbtAmt(source, args) {
    var controlToFocusOn = source.ControlToValidate;

您可以使用“document.getElementByID()”将其切换出来以获取 ID 或您需要的任何属性

    var controlId = document.getElementById(source.ControlToValidate).id;
}

现在您可以使用控件集中精力或做您需要的事情。我今天早些时候必须从 CustomValidator 访问实际的 ControlToValidate。

于 2015-04-27T20:48:39.103 回答