Foros del Web » Programación para mayores de 30 ;) » .NET »

Conservar posición scroll y validadores

Estas en el tema de Conservar posición scroll y validadores en el foro de .NET en Foros del Web. Hola amigos foreros, A través del maravilloso google encontré un javascript que a través del método onsubmit y onload del formulario te guarda y conserva ...
  #1 (permalink)  
Antiguo 16/04/2007, 00:59
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Conservar posición scroll y validadores

Hola amigos foreros,

A través del maravilloso google encontré un javascript que a través del método onsubmit y onload del formulario te guarda y conserva la posicion de los scrolls contenidos en elementos div, hasta aquí todo bien.

Mi sorpresa reside al comprobar que al meter cualquier cosa en el onload los validadores de asp dejan de funcionar.

He probado a hacer return false cuando fuere necesario pero nada, que no va.

Alguna idea?


Este es el script en cuestión

var __oScrollPos;
window.onload=InitScrollPos;

function InitScrollPos(){
__oScrollPos = document.all['__SCROLLPOSITIONS'];
if (__oScrollPos!=undefined) {
LoadScrollPos();
basePostBack = __doPostBack;
__doPostBack = MyPostBack;
document.forms[0].onsubmit = MyPostBackFrm();
}
}

function MyPostBackFrm(){
SaveScrollPos();
return false;
//document.forms[0].submit();
}

function MyPostBack(eventTarget, eventArgument){
SaveScrollPos();
basePostBack(eventTarget, eventArgument);
}

function SaveScrollPos(){
var oNodeList = document.body.getElementsByTagName('DIV');
var sPos = '';
for (i=0;i<oNodeList.length;i++){
oDiv = oNodeList[i];
if ((oDiv.scrollTop>0)||(oDiv.scrollLeft>0)) {
if (sPos.length>0) sPos = sPos + ',';
sPos=sPos + oDiv.id + ':' + oDiv.scrollTop + '#' + oDiv.scrollLeft;
}
}
__oScrollPos.value=sPos;
}

function LoadScrollPos(){
if (__oScrollPos.value=='') return;
var sPos = new String();
sPos = __oScrollPos.value
sItems = sPos.split(',');
for (i=0;i<sItems.length;i++){
var sItem = new String();
sItem = sItems[i];
var iSplit = sItem.indexOf(":",0);
sDiv = sItem.substring(0,iSplit);
sPos = sItem.substring(iSplit+1,sItem.length);
try {
document.all[sDiv].scrollTop=sPos.substring(0,sPos.indexOf('#'));
document.all[sDiv].scrollLeft=sPos.substring(sPos.indexOf('#') + 1,sPos.length);
} catch(e) { }
}
}
  #2 (permalink)  
Antiguo 16/04/2007, 01:32
 
Fecha de Ingreso: abril-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Re: Conservar posición scroll y validadores

Bueno pues como se suele decir yo me lo guiso y yo me lo como,
o como dice el anuncio, a lo Juan Palomo.

Comentar antes de nada que antes ponía que se deshabilitaban los validadores de asp al meter en juego el evento onload del formulario es más falso que judas, lo cierto es que se deshabilitan con el método onsubmit.

Como he solucionado el problema? pues bien, muy facil. Si se carga una página con validadores y ves el html generado aparecerá el siguiente script
<script type="text/javascript">
<!--
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>

y si nos quedamos con la parte

var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}

if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
//aquí nuestra llamada al onsubmit
}

pues voilá, funciona!!, que curioso.....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:37.