Foros del Web » Programando para Internet » Javascript »

No se me refresca la pagina si no es usando un alert

Estas en el tema de No se me refresca la pagina si no es usando un alert en el foro de Javascript en Foros del Web. Hola a todos, tengo un problema, os comento, pondre solo la parte de codigo que creo que es la importante: Tengo un formulario con unos ...
  #1 (permalink)  
Antiguo 21/03/2011, 14:54
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
No se me refresca la pagina si no es usando un alert

Hola a todos, tengo un problema, os comento, pondre solo la parte de codigo que creo que es la importante:

Tengo un formulario con unos combos y un campo hidden para guardar la pagina actual, en este caso no me hace falta los combos, solo el campo hidden:

Código PHP:
echo '<form name ="combos" method="POST" action="">
<input type="hidden" name="pagina" value="1">
</form>'

Tras los combos se hace una consulta para mostrar unos resultados, pero quiero limitar el numero de resultados, asi que lo que hago es, si el limite es 5 por ejemplo, que muestre los 5 primeros resultados, el valor del hidden pagina es 1 inicialmente, y te muestran pues los 5 primeros resultados, abajo, tras la muestra de resultados, he creado unos enlaces para ir de una pagina a otra de la siguiente manera:

Código PHP:
if(isset($_POST['pagina']))
{
    
$paginaSeleccionada $_POST['pagina'];    
}
else
{
    
$paginaSeleccionada 1;    

Código PHP:
$nPaginas ceil($numeroResultados/$limite);
echo 
"<td>";
echo 
"El numero de paginas es ".$nPaginas;
echo 
"</td>";

echo
"<br>";
echo
"<br>";
echo
"<br>";

$contador 1;
 
if(
$nPaginas && $paginaSeleccionada != 1)
{
    echo 
'<a href=""onClick="javascript:irPagina('.($paginaSeleccionada-1).');alert(\'cambio de pagina\')"><img src="Images/back_centro.gif" alt="pagina anterior" width="40px" height="40px" align="absmiddle"/></a>';
    echo 
" ";
}

while(
$contador <= $nPaginas && $nPaginas != 1)
{
    if(
$contador != $paginaSeleccionada)
    {
    
        echo 
'<a href="" onClick="javascript:irPagina('.$contador.');alert(\'cambio de pagina\')">'.$contador.'</a>';
    
        echo 
" ";
    }
    else
    {
        echo 
$paginaSeleccionada;
        echo 
" ";
    }
    
    
$contador++;
}

if(
$nPaginas && $paginaSeleccionada != $nPaginas)
{
    echo 
'<a href=""onClick="javascript:irPagina('.($paginaSeleccionada+1).');alert(\'cambio de pagina\')"><img src="Images/next_centro.gif" alt="pagina anterior" width="40px" height="40px" align="absmiddle"/></a>';
    echo 
" ";

Código PHP:
function irPagina(numeroPagina)
{
    
document.combos.pagina.value numeroPagina;
    
document.combos.submit();    


como ven, tras cada enlace, hay un mensaje molesto alert, que si no lo pongo, la pagina no hace nada, ni se refresca ni nada, sin embargo, cuando se hace con el alert... la pagina cambia tal y como yo quiero que cambie...

No se porque pasa esto, estoy cometiendo algun error? tras el submit siempre el formulario se envia, no? porque con el parche este del alert funciona y sin el no? :S
  #2 (permalink)  
Antiguo 21/03/2011, 19:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No se me refresca la pagina si no es usando un alert

la paginación es más efectiva por GET, en donde solo necesitas crear el link, sin necesitar JS, sumándole url amigables hasta aseguras mejor SEO,
pero creo que el problema está en la forma que usas js:
Código Javascript:
Ver original
  1. function irPagina(numeroPagina)
  2. {
  3.     var f = document.forms['combos'];
  4.     f.elements['pagina'].value = numeroPagina;
  5.     f.submit();    
  6. }

usar las colecciones forms y elements, garantiza un mejor funcionamiento y compatibilidad con los demás navegadores
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 22/03/2011, 03:18
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: No se me refresca la pagina si no es usando un alert

Me sigue = de esa manera, estando en las mismas, si tengo el alert ese puesto me funciona, si no, no me funciona, como puede ser? :S

PD: No uso gets porque normalmente tengo varias variables que pasar en el submit() por POST, por eso preferi crear un campo hidden para que se hiciera todo a la vez... :S

Última edición por salvilz; 22/03/2011 a las 05:33
  #4 (permalink)  
Antiguo 22/03/2011, 12:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: No se me refresca la pagina si no es usando un alert

nadie sabe de que puede ser? :(
  #5 (permalink)  
Antiguo 22/03/2011, 13:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No se me refresca la pagina si no es usando un alert

extraño, intenta devolver false, y coloca # en el href para que el navegador lo interprete como link y no como marcador:

echo '<a href="#" onclick="irPagina('.($paginaSeleccionada+1).'); return false;"> ....//sigue php

PD: en los eventos, como onclick no hace falta el prefijo javascript:, en cambio si lo colocas en el href sí
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 22/03/2011, 13:51
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: No se me refresca la pagina si no es usando un alert

Cita:
Iniciado por maycolalvarez Ver Mensaje
extraño, intenta devolver false, y coloca # en el href para que el navegador lo interprete como link y no como marcador:

echo '<a href="#" onclick="irPagina('.($paginaSeleccionada+1).'); return false;"> ....//sigue php

PD: en los eventos, como onclick no hace falta el prefijo javascript:, en cambio si lo colocas en el href sí
muchas gracias maycolalvarez, esa fue la solucion a mi problema, que hemos hecho exactamente al poner return false? que explicacion teoria tiene eso? que cosa mas extraña... lo digo ya por aprender, por si me pasa otra vez saber de que es.

gracias de nuevo :)
  #7 (permalink)  
Antiguo 22/03/2011, 14:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No se me refresca la pagina si no es usando un alert

te explico, cuando en un link (<a>) no coloco href, el navegador lo interpreta como marcador, así que no le asigna ni foco ni orden de tabulación (porque es una marcador, no un link como tal, se supone que no debería tener acción), en cambio si le coloco el hash (#) le indico que es un link, y para que no me redireccione a otra pagina el # es la referencia a marcadores internos.

cuando pretendes realizar acciones js en link's, muchas veces no quieres que se ejecute el href, para eso devuelvo return false; así el href no se invoca, en este caso no abría problema, porque al ser # solamente el navegador colocaría el # en la url, pero si fuese una url que redireccione si lo haría.

es común su uso en link que requieran confirmación como:

<a href="borrar.php?id=x" onclick="return confirm('¿seguro?');">borrar x</a>

si el usuario dice cancelar al dialogo de confirmación, el href no se ejecuta, porque devuelve false
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 22/03/2011, 14:17
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: No se me refresca la pagina si no es usando un alert

de acuerdo, muchas gracias por la explicacion :)

Etiquetas: Ninguno
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 01:13.