0

クライアント側の検証スクリプトを呼び出す CustomValidation コントロールを備えた ASP.NET TextBox があります。

<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 に答える