Foros del Web » Programando para Internet » Javascript »

devolver foco y contenido a text

Estas en el tema de devolver foco y contenido a text en el foro de Javascript en Foros del Web. Hola, estoy haciendo el control del envio d un formulario, donde despues de hacer diversas comprobaciones, en caso de que sea incorrecto el usuario o ...
  #1 (permalink)  
Antiguo 16/09/2008, 10:06
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
devolver foco y contenido a text

Hola, estoy haciendo el control del envio d un formulario, donde despues de hacer diversas comprobaciones, en caso de que sea incorrecto el usuario o el login, debo devolver el foco al control que lo produjo (usuario o password) y pasarle el contenido introducido, más concretamente así reza "el ejercicio":

Código:
En todos los casos, al cerrar las ventanas de alerta, se devolverá el foco al control
que provocó el error y se seleccionará automáticamente su contenido.
aqui os paso la funcion que controla el formulario:

Código PHP:
function procesa_acceso(objeto){

    
    var 
usuario objeto.usuario.value;
    
patron_usuario = /^as[a-zA-Z]+/;
    
    var 
clave objeto.clave.value;
    var 
longitud_clave clave.length;
    
    
patron_clave = /^c([0-9]{4})|([,.;:]{4})/;
    
patron_clave_inicio = /^c/;
    
    if (
usuario.search(patron_usuario) == -1)
        
alert ('Usuario erroneo');
        else if ( 
clave.search(patron_clave_inicio) == -1)
                
alert ('Su clave debe comenzar por el caracter c');
                else if (
longitud_clave != 5)
                    
alert ('La longitud de la clave introducida es incorrecta');
                    else if (
clave.search(patron_clave) == -1)
                        
alert ('La clave introducida no es correcta');
                        else
                            
alert ('usuario correcto');
        



  #2 (permalink)  
Antiguo 16/09/2008, 10:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: devolver foco y contenido a text

Sólo necesitas hacer referencia al input, por ejemplo usuario:
Código javascript:
Ver original
  1. objeto.usuario.focus();
  2. objeto.usuario.select();
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/09/2008, 10:11
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: devolver foco y contenido a text

perdón pero no se como meter el contenido para que lo lea como codigo javascript....


Entonces, he probado haciendolo así pero no va:

Código PHP:
if (usuario.search(patron_usuario) == -1){
        
alert ('Usuario erroneo');
                                
objeto.usuario.value usuario;
        
objeto.usuario.focus();
        } 

Tiene que ser sencillo, a ver si podeis ayudarme....gracias!!
  #4 (permalink)  
Antiguo 16/09/2008, 10:15
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: devolver foco y contenido a text

es que anteriormente, se decía que al cargarse la pagina acceso.html debía irse el foco hacia el input "usuario", entonces, lo puse en el body onload, pero claro, ahora cuando se cierra la ventan de alerta despues del fallo al introducir algun dato, creo que se recarga la pagina html volviendo a coger el foco el input usuario no es así??
  #5 (permalink)  
Antiguo 16/09/2008, 10:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: devolver foco y contenido a text

No entiendo lo que estás tratando de hacer, ¿por qué estás asignando usuario a usuario? . ¿Has probado con usar el método select() que te comenté en el otro mensaje?. ¿Puedo ver el resto de la función?. Lo más probable es que no estés haciendo un return false para cancelar el envío.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 16/09/2008, 11:36
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: devolver foco y contenido a text

vamos a ver....este es el codigo html del formulario, que se carga en el frame principal al pulsar en "acceso candidatos" llamemosle así....

Código HTML:
<body onLoad="acceso.usuario.focus()">
<div class="BloquePrincipal">

<form name="acceso" method="post" onsubmit="procesa_acceso(this)">

<div>Usuario: <input type="text" name="usuario" size="30" /></div>
<div>Password: <input type="password" name="clave" size="30"/></div>
<div><input type="submit" name="aceptar" value="Acceder"><input type="reset" name="Borrar" value="Borrar"></div>
</form>


</div> 
Y que segun me dicen en el guion, tiene que tomar el foco al ser cargado el input usuario....entonces eso hago en el body...luego está la funcion javacript, que esta al completo de momento....

Código PHP:
function procesa_acceso(objeto){

    
    var 
usuario objeto.usuario.value;
    
patron_usuario = /^as[a-zA-Z]+/;
    
    var 
clave objeto.clave.value;
    var 
longitud_clave clave.length;
    
    
patron_clave = /^c([0-9]{4})|([,.;:]{4})/;
    
patron_clave_inicio = /^c/;
    
    if (
usuario.search(patron_usuario) == -1){
        
alert ('Usuario erroneo');
        
objeto.usuario.focus();
        return (
false);
        }
        else if ( 
clave.search(patron_clave_inicio) == -1){
                
alert ('Su clave debe comenzar por el caracter c');
                
objeto.clave.focus();
                return (
false);
                }
                else if (
longitud_clave != 5){
                    
alert ('La longitud de la clave introducida es incorrecta');
                    
objeto.clave.focus();
                    return (
false);
                    }
                    else if (
clave.search(patron_clave) == -1){
                        
alert ('La clave introducida no es correcta');
                        
objeto.clave.focus();
                        return(
false);
                        }
                        else
                            
alert ('usuario correcto');
                            
        

y cuando sale la ventana de alerta, al cerrarse se le devuelve el foco al input usuario, pero será por lo que puse en el body del html no??lo del metodo select, no se que hace...he estado mirando pero no lo encuentro...

Y lo que quiero hacer, es que cuando ingreses un nombre de usuario erroneo por ejemplo, saslga la ventana alerta, se cierre, se le devuelva el foco al input que da el error mostrando la "cadena" que se ingresó para que diera error....a ver si me decis pq es una chorrada pero llevo toda la tarde liao...
  #7 (permalink)  
Antiguo 16/09/2008, 11:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: devolver foco y contenido a text

El problema está en que el formulario se envía de igual forma, debería ser:
Código html:
Ver original
  1. <form name="acceso" method="post" onsubmit="return procesa_acceso(this)">
Además, para que el texto quede seleccionado, además del método focus() debes usar también el método select().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 16/09/2008, 12:05
 
Fecha de Ingreso: junio-2007
Ubicación: Cádiz
Mensajes: 369
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: devolver foco y contenido a text

era eso, ya va, muchas gracias !!!
  #9 (permalink)  
Antiguo 09/09/2010, 18:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: devolver foco y contenido a text

hola yo ando en algo parecido con un formulario quien podria ayudarme por favor
Estoy haciendo el control del envio de un formulario, donde se puede hacer validaciones y cuando el usuario ingresa un valor ya regsitrado le manda un msj de aviso.
Pero lo que quiero saber como puedo hacer devolver el foco y pasarle lo que se ingreso en el campo de texto
  #10 (permalink)  
Antiguo 09/09/2010, 18:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: devolver foco y contenido a text

ahi les dejo si pudise alguien ayudarme que es demasiado urgente que me cuesta un poco realizar la programacion, epro el pongo empuje.

codigo php

<SCRIPT LANGUAGE="JavaScript">
//VALIDAR PATENTE
var patente_valida=/^([A-Z]{2}\d{4}$)|([BCDFGHJKLMNPQRSTVWXYZ]{4}\d{2})$/


function Enviar(form)
{
//if (form.patente.value.length<6){
// alert("Por favor ingrese una patente válida")
//form.patente.value.focus()
if(form.patente.value==""){
alert("Escriba una patente, por favor");
form.patente.focus();
//document.form.getElementById ('patente').focus ();
//form.patente.select();

// window.onload=function(){
//setInterval('h()',10);
//document.getElementById('patente').focus();
//}//
return true;

}
form.patente.value=form.patente.value.toUpperCase( );
if(form.patente.value.search(patente_valida)==-1){
alert("Por favor ingrese una patente válida");
form.patente.focus();
return (false);
}

else if (form.tipo_movil.value==0)
{
alert("Por favor seleccionar un Tipo de Vehiculo")
form.tipo_movil.focus();
return true;

}
else if (form.marca.value=="")
{
alert("Por favor Ingrese una Marca")
form.marca.focus();
return true;

}
else if (form.modelo.value=="")
{
alert("Por favor Ingrese un Modelo")
form.modelo.focus();
return true;

}
else if (form.capacidad_estanque.value=="")
{
alert("Por favor Ingresar Capacidad Estanque")
form.capacidad_estanque.focus();
return true;

}
else if (form.año.value=="")
{
alert("Por favor Ingresar Año")
form.año.focus();
return true;
}
else if (form.tipo_combustible.value==0)
{
alert("Por favor Seleccionar Tipo Combustible")
form.tipo_combustible.focus();
return true;
}
else if (form.rendimiento.value=="")
{
alert("Por favor Ingresar Rendimiento")
form.rendimiento.focus();
return true;
}
else if (form.octanaje.value==0)
{
alert("Por favor Seleccionar Octanaje")
form.octanaje.focus();
return true;
}
else if (form.tipo_combustible.value=='bencina')
{
if (form.octanaje.value=='diesel')
{
alert("Diesel no es un Octanaje. solo permitidos 93, 95, 97");
return false;
}
else if (form.octanaje.value=='kerosen')
{
alert("Kerosen no es un Octanaje. solo permitidos 93, 95, 97");
return false;
}

else
{
form.submit();
}
}
//ELSE IF

else if(form.tipo_combustible.value=='petroleo')
{
if (form.octanaje.value=='93')
{
alert("93 no es un Octanaje. solo permitido diesel");
return false;
}
if (form.octanaje.value=='95')
{
alert("95 no es un Octanaje. solo permitido diesel");
return false;
}
if (form.octanaje.value=='97')
{
alert("97 no es un Octanaje. solo permitido diesel");
return false;
}
else if (form.octanaje.value=='kerosen')
{
alert("Kerosen no es un Octanaje. solo permitido diesel");
return false;
}
else
{
form.submit();
}
}
else if(form.tipo_combustible.value=='kerosen')
{
if (form.octanaje.value=='93')
{
alert("93 no es un Octanaje. solo permitido kerosen");
return false;
}
if (form.octanaje.value=='95')
{
alert("95 no es un Octanaje. solo permitido kerosen");
return false;
}
if (form.octanaje.value=='97')
{
alert("97 no es un Octanaje. solo permitido kerosen");
return false;
}
else if (form.octanaje.value=='diesel')
{
alert("Diesel no es un Octanaje. solo permitido kerosen");
return false;
}
else
{
form.submit();
}
}

//TERMINO
else
{
form.submit();
}
}




function soloNumeros(evt){
//asignamos el valor de la tecla a keynum
if(window.event){// IE
keynum = evt.keyCode;
}else{
keynum = evt.which;
}
//comprobamos si se encuentra en el rango
if(keynum>47 && keynum<58){
return true;
}else{
return false;
}
}


//-------VALIDAR RENDIMIENTO
//para validar solo numeros
function soloDecimales(){
valor = document.getElementById("rendimiento").value;
if( isNaN(valor) ) {
return false;
}
}

//----VALIDAR CAPADIDAD_ESTANQUE
function soloDecCar(){
valor = document.getElementById("capacidad_estanque").valu e;
if( isNaN(valor) ) {
return false;
}
}




//validar decimal
function validar(rendimiento) {
if(rendimiento=='') alert ('campo vacío');
if(isNaN(rendimiento) || rendimiento.split('.')[1].length!=2)
alert('numero erroneo');
}

//numero decimal valida sin 2 comas
function numeros(e,rendimiento) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla==8) return true; //Tecla de retroceso (para poder borrar)
if ((tecla<48 || tecla>57) && tecla!=46 && tecla!=44 ) return false
if (tecla == 46 && (rendimiento.indexOf('.')!=-1 || rendimiento.indexOf(',')!=-1)) return false;
if (tecla == 44 && (rendimiento.indexOf(',')!=-1 || rendimiento.indexOf('.')!=-1)) return false;
}










</SCRIPT>

<center>
<h2>Ingresar vehiculo</h2>
<body onLoad="form.patente.focus()">
<form method="POST" action="ingresarvehiculo2.php"onsubmit="return procesa(this)">
<TABLE BORDER="0">
<tr>
<td>patente:</td>
<td>
<input type="text" name="patente" size="6" maxlength="6">
</td>
</tr>
<tr>
<td>tipo movil:</td>
<td>
<select name="tipo_movil">
<option value="0">[seleccione una opción]</option>
<option value='automovil'>automovil</option>
<option value='camioneta'>camioneta</option>
<option value='furgon'>furgon</option>
<option value='camion'>camion</option>
<option value='minicargador'>minicargador</option>
<option value='compresor'>compresor</option>
</select>
</td>
</tr>
</td>
</tr>
<tr>
<td>marca:</td>
<td>
<input type="text" name="marca" size="30" maxlength="30">
</td>
</tr>
<tr>
<td>modelo:</td>
<td>
<input type="text" name="modelo" size="30" maxlength="30">
</td>
</tr>

<td>capacidad estanque:</td>
<td>
<input type="text" name="capacidad_estanque" size="9" maxlength="9" onkeypress="return soloDecCar()">
</td>
</tr>
<tr>
<td>año:</td>
<td>
<input type="text" name="año" size="6" maxlength="4" onkeypress="return soloNumeros(event)">
</td>
</tr>

</tr>
<tr>
<td>tipo combustible:</td>
<td>
<select name="tipo_combustible">
<option value="0">[seleccione una opción]</option>
<option value='petroleo'>petroleo</option>
<option value='bencina'>bencina</option>
<option value='kerosen'>kerosen</option>

</select>
</td>
</tr>
<tr>
<td>rendimiento:</td>
<td>
<input type="text" name="rendimiento" size="9" maxlength="9" onkeypress="return soloDecimales()">
</td>
</tr>
<tr>
<td>octanaje:</td>
<td>
<select name="octanaje">
<option value="0">[seleccione una opción]</option>
<option value='93'>93</option>
<option value='95'>95</option>
<option value='97'>97</option>
<option value='diesel'>diesel</option>
<option value='kerosen'>kerosen</option>

</select>
</td>
</tr>
</table>
<br>
<input type="button" value="Ingresar" onclick='Enviar(this.form)'>
<input type="button" value="Modificar" onclick='cambiar(this.form)'>
</form>
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 05:43.