我有一个文本框,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 ValidateTypes
in English) 是 JavaScript 中的一个通用函数,它为 'rut' 选项提供格式;但是在所有过程结束后该格式会丢失
当我在文本框中写“19”时,JavaScript 函数将此文本格式化为“1-9”,但是当请求过程在beginrequest
or之后继续时initializerequest
,AJAX 过程似乎清除了 JavaScript 的修改并让我的文本回到“ 19"