如何在AJAX请求期间保留JavaScript修改的文本?

时间:2012-11-28 17:01:14

标签: javascript asp.net ajax text scriptmanager

我有一个带autopostback = true的文本框,我有一个JavaScript函数来验证它。当值为OK时,JavaScript函数也会执行一些格式化,但是当我从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;
    }
}

ValidarTipo(或英语中的ValidateTypes)是JavaScript中的通用函数,它执行'rut'选项的格式;但是在所有过程结束后,该格式将丢失

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

0 个答案:

没有答案