Ver Mensaje Individual
  #10 (permalink)  
Antiguo 04/02/2013, 08:32
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: deshabilitar boton hasta completar campos

El problema para integrar las 2 cosas es el uso del evento onkeyup, solo sería posible si el select fuese operado por el cliente antes de completar los text boxes. Una alternativaes tener deshabilitados los textbox por defecto y habilitarlos solo al modificar le select.
Lo del alert es solo un ejemplo. Antes de continuar tenés que tener en claro que una validación efectiva solo puede hacerse del lado del servidor. Con javascript, en este caso solo estamos mejorando la experiencia del usuario
Pero algo como esto te puede servir

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Botón Submit disabled con textBox y Select</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  <script type="text/javascript">
  7. //<![CDATA[
  8. // Definimos los campos que se han de verificar, contruimos un array con los id de los mismos
  9. var campos = ["campo1", "campo2", "campo3", "campo4"];
  10. var c;
  11. function activar() {
  12. c = 0;
  13. for(var i in campos){
  14. i = parseInt(i);
  15. var cadenaL = document.getElementById(campos[i]).value;
  16. // hacemos un trim previo a la verificación
  17. cadenaL = cadenaL.replace(/^\s+/g,'').replace(/\s+$/g,'')
  18. if(cadenaL != ""){
  19. c++; // incrementamos c por cada campo que no está vacío
  20. }
  21. if(c == (i+1)){ // si c es = al total de los campos habilitamos el submit
  22. document.getElementById('envia').disabled = false;
  23. }else{
  24. document.getElementById('envia').disabled = true;
  25. }
  26. }
  27. }
  28.  
  29. // la validación del select controla la habilitación de los campos de texto
  30. function validar_select(){
  31. var pais = document.getElementById('pais').value;
  32. console.log(c + '-' +campos.length );
  33.     if(pais != ""){
  34.         for(var d in campos){
  35.         document.getElementById(campos[d]).disabled = false;
  36.         }
  37.         if(c== campos.length){
  38.         document.getElementById('envia').disabled = false;
  39.         }
  40.     }else{
  41.         for(var d in campos){
  42.         document.getElementById(campos[d]).disabled = true;
  43.         }
  44.         document.getElementById('envia').disabled = true;
  45.     }
  46. }
  47.  
  48. // agregamos el evento onkeyup dinamicamente a los campos requeridos
  49. window.onload = function(){
  50.     for(var e in campos){
  51.     var elem = document.getElementById(campos[e]);
  52.     if (elem.addEventListener){
  53.     elem.addEventListener("keyup", function(){activar()}, false);
  54.     }else{ // <IE9
  55.         if (elem.attachEvent){
  56.         elem.attachEvent ("onkeyup", function () {activar(elem)});
  57.         }
  58.     }
  59.     }
  60. }
  61.  
  62. //]]>
  63. </head>
  64. <form action="#" method="post" onsubmit="alert('Form procesado');">
  65. <div>
  66. <select id="pais" name="pais" onchange="validar_select();">
  67. <option value="">Selecciona País</option>
  68. <option value="arg">Argentina</option>
  69. <option value="esp">España</option>
  70. <br />
  71. </div>
  72. <div>
  73. <input type="text" id="campo1" value="" disabled="disabled" /><br />
  74. <input type="text" id="campo2" value="" disabled="disabled" /><br />
  75. <input type="text" id="campo3" value="" disabled="disabled" /><br />
  76. <input type="text" id="campo4" value="" disabled="disabled" /><br />
  77. <input type="submit" id="envia" name="envia" value="procesar" disabled="disabled"/><br />
  78. </div>
  79. </form>
  80. </body>
  81. </html>

Demo
http://foros.emprear.com/javascript/...s_select.phtml

Y la recomendación final, dados tus comentarios es que empieces con un manual de Javascript, http://librosweb.es sería un buen punto de partida

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.