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(or ValidateTypesin English) 是 JavaScript 中的一个通用函数,它为 'rut' 选项提供格式;但是在所有过程结束后该格式会丢失

当我在文本框中写“19”时,JavaScript 函数将此文本格式化为“1-9”,但是当请求过程在beginrequestor之后继续时initializerequest,AJAX 过程似乎清除了 JavaScript 的修改并让我的文本回到“ 19"

4

0 回答 0