Acceder Registrarme

Cambiar el id por segunda vez.


Por: Victor Rosario Publicado el: 2016-09-22 12:54:42 Pregunta abierta

Quiero validar unos input tipo texto en html, es decir que si los campos estan vacios el input submit no se activara(esta desabilitado por defecto), cuando estaba sin ningun diseño y por ejemplo al llenar los 4 campos se activa el boton, pero si borro el dato de un campo se desactiva, hasta ahi esta bien, pero al agregarle un diseño al boton ya no me funciona, porque claro lleno los 4 campos y el boton se activa, pero si borro el dato de un campo el boton no se desactiva, para hacer eso use un if para cambiar el id(con el cual enlazo a <style></style>), se como activar el button si los campos estan llenos, pero no como desactivar.

Lo que busco es que si al estar los campos llenos se active el boton, pero si en caso borre el dato de un campo vuelva a desactivarse.
 

----------------------------------------------------------------------------

<style>
#button {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    cursor: pointer;
}

#envia {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    opacity: 0.6;
    cursor: not-allowed;
}

---------------------------------------------------------------------------

 

 

 

 

Al estar desabilitado tiene un estilo, y al estar activado tiene otro estilo

Aqui dejo el codigo por si me pueden ayudar gracias.

 

-----------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Submit disabled</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />


<style>
#button {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    cursor: pointer;
}

#envia {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    opacity: 0.6;
    cursor: not-allowed;
}

</style>

 <script type="text/javascript">
//<![CDATA[
// Definimos los campos que se han de verificar, contruimos un array con los id de los mismos
var campos = ["campo1", "campo2", "campo3", "campo4"];
function activar() {
var c = 0;
for(var i in campos){
i = parseInt(i);
var cadenaL = document.getElementById(campos[i]).value;
// hacemos un trim previo a la verificación
cadenaL = cadenaL.replace(/^\s+/g,'').replace(/\s+$/g,'')
if(cadenaL != ""){
c++; // incrementamos c por cada campo que no está vacío
}
if(c == (i+1)){ // si c es = al total de los campos habilitamos el submit
document.getElementById('envia').disabled = false;
}else{
document.getElementById('envia').disabled = true;
}


if (c==4) {

document.getElementById('envia').id = 'button';
}
}
}

 
// agregamos el evento onkeyup dinamicamente a los campos requeridos
window.onload = function(){
    for(var e in campos){
    var elem = document.getElementById(campos[e])
    if (elem.addEventListener){
    elem.addEventListener("keyup", function(){activar()}, false);
    }else{ // <IE9
        if (elem.attachEvent){
        elem.attachEvent ("onkeyup", function () {activar(elem)});
        }
    }
    }
}
 
//]]>
</script>
</head>
<body>

<input type="text" id="campo1" value="" /><br />
<input type="text" id="campo2" value="" /><br />
<input type="text" id="campo3" value="" /><br />
<input type="text" id="campo4" value="" /><br />
<input type="submit" id="envia" name="envia" value="procesar" disabled="disabled"/><br />

</body>
</html>



----------------------------------------------------------------------



HTML

Kevin Arnold Arias Figueroa Marcado como mejor respuesta
por el autor de la pregunta
Usuario de (Perú)

Con respecto a tu pregunta, en tu código veo que ya vas haciendo cierta parte, sin embargo, no recomiendo que le cambies el id, sería mejor que asignes un atributo class para editar el diseño de tu control y que en la condición también trabajes con la propiedad disables del control mismo... y lo único que te falta para desactivar es que pongas el caso contrario a la condición de cuando habilitas... y en ese caso contrario deberías manejar la manera de deshabilitar con la propiedad disabled y cambiar el class para que tome el otr estilo que quieres.

Espero se entienda... caso contrario házmelo saber para dejarte un ejemplo con código especifico para el caso... sin embargo como te dije en el comentario anterior, te recomiendo que edites tu pregunta y le pongas la visualiación de código en el editor que tienes disponible para publicar preguntas, así se verá y entenderá mejor esto. :D!

Saludos.

  • 2016-09-22 14:24:36
  • Me gusta(0)
Usuario de (Perú)

Hola Victor. Sería bueno que cuando publiques código en tu pregunta uses la inclusión de código en el editor para que dichos códigos sea más legibles... Puedes editarlo y poner el código con esa visualización de código... revisa bien la parte del editor en la parte superior tienes esa opción.

  • 2016-09-22 14:12:51
  • Me gusta(0)
Usuario de (No especificado)

Gracias por responder, lo cambie segun se llenan los campos por el Class y me funciono.

Aqui dejo el codigo por si  alguien lo necesita.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Submit disabled</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />


<style>
.estadoinactivo {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    opacity: 0.6;
    cursor: not-allowed;
}

.estadoactivo {
    background-color: green; /* Green */
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    opacity: 0.6;
    cursor: pointer;
}

</style>



 <script type="text/javascript">
//<![CDATA[
// Definimos los campos que se han de verificar, contruimos un array con los id de los mismos
var campos = ["campo1", "campo2", "campo3", "campo4"];
function activar() {
var c = 0;
for(var i in campos){
i = parseInt(i);
var cadenaL = document.getElementById(campos[i]).value;
// hacemos un trim previo a la verificación
cadenaL = cadenaL.replace(/^\s+/g,'').replace(/\s+$/g,'')
if(cadenaL != ""){
c++; // incrementamos c por cada campo que no está vacío
}
if(c == (i+1)){ // si c es = al total de los campos habilitamos el submit
document.getElementById('envia').disabled = false;
}else{
document.getElementById('envia').disabled = true;
}



//Valido si estan llenos los campos para que se active el button con diseño
//si despues que activarse el boton borro el dato de un campo se cambia el class
//y toma el class ="estado inactivo" que era por defecto
if (c==4) {

document.getElementById('envia').className = "estadoactivo";
}else{
document.getElementById('envia').className = "estadoinactivo";
}

}

}





 
// agregamos el evento onkeyup dinamicamente a los campos requeridos
window.onload = function(){
    for(var e in campos){
    var elem = document.getElementById(campos[e])
    if (elem.addEventListener){
    elem.addEventListener("keyup", function(){activar()}, false);
    }else{ // <IE9
        if (elem.attachEvent){
        elem.attachEvent ("onkeyup", function () {activar(elem)});
        }
    }
    }
}
 
//]]>
</script>
</head>
<body>

<input type="text" id="campo1" value="" /><br />
<input type="text" id="campo2" value="" /><br />
<input type="text" id="campo3" value="" /><br />
<input type="text" id="campo4" value="" /><br />
<a href= http://www.pagina.com target=_blank>
<input type="submit" id="envia" name="envia"  class="estadoinactivo" value="procesar" disabled="disabled"/><br />
</a>

</body>
</html>
  • 2016-09-22 20:57:47
  • Me gusta(2)

  • Debes estar logueado para realizar comentarios