1

テキストボックスがautopostback = trueあり、それを検証する JavaScript 関数があります。JavaScript 関数も値が OK のときに少しフォーマットを行いますが、PageRequestManager の add_beginRequest や add_initializeRequest から呼び出すと、処理後に値が変更されます。これどうやってするの?

まず、リクエストを制御します。

try {
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequest);
    }
    catch (e) { }

次に、検証関数を呼び出すハンドラーを用意し、必要な種類の検証を渡します。precallbackvalidation は私のカスタム検証関数であり、エラーが発生した場合は部分的なポストバックを拒否しますが、検証に問題がなければ、検証関数はテキストボックス内に何らかのフォーマットを既に作成しており、ポストバック後に失われます。

function InitializeRequest(sender, args) {
    if (typeof precallbackvalidation == 'function') {
        if ($(args._postBackElement).attr("PreCallBackIndex") != null) {
            if (!precallbackvalidation(args._postBackElement)) {
                args.set_cancel(true);
            }
        }
    }
}

JavaScript でテキストをフォーマットし、ポストバック後に失われないようにする方法を知りたいです。

<asp:textbox ID="txtRut" runat="server" MaxLength="13" size="13" Width="75px" TabIndex="1" AutoPostBack="true" PreCallBackIndex="rutcte" ></asp:textbox>                        

私のページには、検証をトリガーする属性と検証関数を含むテキストボックスがあります。

function precallbackvalidation(obj) {
    var index = $(obj).attr("PreCallBackIndex");
    if ($(obj).length > 0) {
        switch (index) {
            case 'rutcte':
                return ValidarTipo('rut', obj, true);                    
                break;
            case 'ptjegastos':
                if (ValidarTipo('entero', obj)==false) {
                    if (ValidarTipo('real', obj)==false) {
                        return false;
                    }
                }
                return true;
                break;
            case 'ptjemargen':
                if (ValidarTipo('entero', obj) == false) {
                    if (ValidarTipo('real', obj) == false) {
                        return false;
                    }
                }
                return true;
                break;
            case 'ptjeppm':
                if (ValidarTipo('entero', obj) == false) {
                    if (ValidarTipo('real', obj) == false) {
                        return false;
                    }
                }
                return true;
                break;
            case 'ptjecomision':
                if (ValidarTipo('entero', obj) == false) {
                    if (ValidarTipo('real', obj) == false) {
                        return false;
                    }
                }
                return true;
                break;
            default:
                return true;
                break;
        }
    }
    else {
        return true;
    }
}

The ValidarTipo(またはValidateTypes英語で) は、'rut' オプションのフォーマットを行う JavaScript の汎用関数です。ただし、すべてのプロセスが終了すると、その形式は失われます

テキストボックス内に「19」と書くと、JavaScript 関数はこのテキストを「1-9」にフォーマットしますが、リクエストプロセスがbeginrequestorの後に続くinitializerequestと、AJAX プロセスは JavaScript の変更をクリアし、テキストを「 19"

4

0 に答える 0