Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Al no loguear como devolver el foco...?

Estas en el tema de Al no loguear como devolver el foco...? en el foro de Frameworks JS en Foros del Web. Hola a todos. Por aquellas casualidades de la vida al registrarme en este foro me ha aparecido justamente la duda que quiero plantearos y que ...
  #1 (permalink)  
Antiguo 23/02/2009, 19:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
Al no loguear como devolver el foco...?

Hola a todos. Por aquellas casualidades de la vida al registrarme en este foro me ha aparecido justamente la duda que quiero plantearos y que no sé resolver. He estado buscando en el foro y tampoco he sabido encontrarlo, disculpas si he errado.

Veamos, intento que al registrarse (usando ajax) y este sea negativo (por que el nombre del login ya esté ocupado) el foco vuelva al campo del formulario que lo pidió. Junto a este campo he colocado un <span> que muestra si se está ese login está libro o no. Hasta aquí todo correcto, pero en ningún caso puedo hacer volver el foco del formulario al campo de login.

Os pongo el código...

Va a ser que no, al incorporar el código un mensaje del foro me dice que no puedo insertar enlaces hasta pasados 30 mensajes. Si me decís como puedo insertar código con enlaces (supongo que detecta los relativos dentro de la función ajax) os lo agredecería.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 23/02/2009, 22:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Al no loguear como devolver el foco...?

Solamente tienes que llamar al metodo focus() que quieras, por ejemplo:

document.getElementById('login').focus();

Saludos
  #3 (permalink)  
Antiguo 24/02/2009, 04:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Al no loguear como devolver el foco...?

Cita:
Iniciado por GatorV Ver Mensaje
Solamente tienes que llamar al metodo focus() que quieras, por ejemplo:

document.getElementById('login').focus();

Saludos
Gracias GatorV, lo he intenté así pero no hay forma. Voy a intentar pegar el código aunque sea como texto plano del archivo PHP de consulta de la función ajax.

$nom=$_POST['nombre'];

include("conn_db.php");
$query="SELECT * FROM usuario WHERE login='$nom'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0) echo "este nombre puedes utilizarlo";
else {
echo "login ya utilizado!";
//echo "<script type='text/javascript'>window.document.formulario_alta.login. focus();</script>";
}
@mysql_free_result($result);

Un saludo

PD: la línea donde intento colocar el foco en el campo correspondiente está comentada pero es que estoy de pruebas...
  #4 (permalink)  
Antiguo 24/02/2009, 10:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Al no loguear como devolver el foco...?

Si lo vas a hacer desde la respuesta AJAX, tienes que evaluar el Javascript que viene de AJAX, revisa las FAQs del foro.

Saludos
  #5 (permalink)  
Antiguo 24/02/2009, 13:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Al no loguear como devolver el foco...?

Hola, he mirado las FAQ's, supongo que te refieres a que es una pregunta más para javascript que para Ajax. Bien, para allí que me voy

Un saludo.
  #6 (permalink)  
Antiguo 24/02/2009, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Al no loguear como devolver el foco...?

No, si es perteneciente a este foro, y claramente dice en las FAQs: http://www.forosdelweb.com/f77/howto...e-ajax-510438/

Saludos
  #7 (permalink)  
Antiguo 24/02/2009, 14:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
No fastidies si ya lo he publicado allí. En fin, miraré lo que me comentas... Vaya entrada que he tenido en los foros

Una cosa, ¿el script de maborak necesita que incorpore librerias de prototype?

Última edición por GatorV; 25/02/2009 a las 12:18
  #8 (permalink)  
Antiguo 25/02/2009, 12:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Al no loguear como devolver el foco...?

No, solamente el interpretadorajax.js.

Saludos
  #9 (permalink)  
Antiguo 04/03/2009, 17:47
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Al no loguear como devolver el foco...?

Hola de nuevo. No hay manera. Os envio el código entero a ver si me echáis una mano...



<script language="javascript">

var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
/**
* Eval script fragment
* @return String
*/
String.prototype.evalScript = function()
{
return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
};
/**
* strip script fragment
* @return String
*/
String.prototype.stripScript = function()
{
return this.replace(new RegExp(tagScript, 'img'), '');
};
/**
* extract script fragment
* @return String
*/
String.prototype.extractScript = function()
{
var matchAll = new RegExp(tagScript, 'img');
return (this.match(matchAll) || []);
};
/**
* Eval scripts
* @return String
*/
Array.prototype.evalScript = function(extracted)
{
var s=this.map(function(sr){
var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
if(window.execScript){
window.execScript(sc);
}
else
{
window.setTimeout(sc,0);
}
});
return true;
};
/**
* Map array elements
* @param {Function} fun
* @return Function
*/
Array.prototype.map = function(fun)
{
if(typeof fun!=="function"){return false;}
var i = 0, l = this.length;
for(i=0;i<l;i++)
{
fun(this[i]);
}
return true;
};


var peticion = false;
try {
peticion = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
peticion = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
peticion = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
peticion = false;
}
}
}

if (!peticion) alert("Error al inicializar!");
function cargarFragmento(fragment_url, element_id) {
var element = document.getElementById(element_id);
element.innerHTML = '<p><img src="Imagenes/ajax_loading.gif" /></p>';
peticion.open("GET", fragment_url);
peticion.onreadystatechange = function() {
if (peticion.readyState == 4 && peticion.status==200) {
element.innerHTML = peticion.responseText;
}
}
var scs=peticion.responseText.extractScript(); //capturamos los scripts
element_id.innerHTML=peticion.responseText.stripSc ript(); //eliminamos los scripts... ya son innecesarios
scs.evalScript(); //ahora si, comenzamos a interpretar todo
peticion.send(null);
}


</script>



En cuanto a peticion.php es

<?php
echo "prueba del algodón...";
echo "<script type='text/javascript'>alert('algo');</script>";
?>


He intentado cambiar las tres líneas (que interpretan los scripts) de posición pero no hay forma. Entiendo que van antes de peticion.send(null)..., pero no lo sé exactamente.

Un saludo.
  #10 (permalink)  
Antiguo 04/03/2009, 19:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Al no loguear como devolver el foco...?

El código tiene que ir dentro de tu evento que maneja la respuesta, no despues del send.

Saludos
  #11 (permalink)  
Antiguo 05/03/2009, 03:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Al no loguear como devolver el foco...?

Cita:
Iniciado por GatorV Ver Mensaje
El código tiene que ir dentro de tu evento que maneja la respuesta, no despues del send.

Saludos
Muchas gracias, lo he introducido justo antes de element.innerHTML = peticion.responseText; y funciona, por fin.

saludos y gracias.
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 22:33.