Regresar   Foros del Web > Programación para sitios web > Javascript

El registro es Gratis en Foros del Web
Respuesta
 
Herramientas Buscar en Tema Desplegado
Antiguo 29/04/03, 10:42:04   #121 (permalink)
Colaborador
Kaopectate ha deshabilitado el Karma
 
Registrado: nov 2002
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.124
Kaopectate is offline  
123.- Resta de fechas

P: ¿Como puedo saber la cantidad de días, meses y años que hay entre dos fechas?

R: [ver ejemplo]

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
   function 
cerosIzq(sValnPos){
    var 
sRes sVal;
    for (var 
sVal.lengthnPosi++)
     
sRes "0" sRes;
    return 
sRes;
   }

   function 
armaFecha(nDianMesnAno){
    var 
sRes cerosIzq(String(nDia), 2);
    
sRes sRes "/" cerosIzq(String(nMes), 2);
    
sRes sRes "/" cerosIzq(String(nAno), 4);
    return 
sRes;
   }

   function 
sumaMes(nDianMesnAnonSum){
    if (
nSum >= 0){
     for (var 
0Math.abs(nSum); i++){
      if (
nMes == 12){
       
nMes 1;
       
nAno += 1;
      } else 
nMes += 1;
     }
    } else {
     for (var 
0Math.abs(nSum); i++){
      if (
nMes == 1){
       
nMes 12;
       
nAno -= 1;
      } else 
nMes -= 1;
     }
    }
    return 
armaFecha(nDianMesnAno);
   }

   function 
esBisiesto(nAno){
    var 
bRes true;
    
res bRes && (nAno == 0);
    
res bRes && (nAno 100 != 0);
    
res bRes || (nAno 400 == 0);
    return 
bRes;
   }

   function 
finMes(nMesnAno){
    var 
nRes 0;
    switch (
nMes){
     case 
1nRes 31; break;
     case 
2nRes 28; break;
     case 
3nRes 31; break;
     case 
4nRes 30; break;
     case 
5nRes 31; break;
     case 
6nRes 30; break;
     case 
7nRes 31; break;
     case 
8nRes 31; break;
     case 
9nRes 30; break;
     case 
10nRes 31; break;
     case 
11nRes 30; break;
     case 
12nRes 31; break;
    }
    return 
nRes + (((nMes == 2) && esBisiesto(nAno))? 10);
   }

   function 
diasDelAno(nAno){
    var 
nRes 365;
    if (
esBisiesto(nAno)) nRes++;
    return 
nRes;
   }

   function 
anosEntre(nDi0nMe0nAn0nDi1nMe1nAn1){
    var 
nRes Math.max(0nAn1 nAn0 1);
    if (
nAn1 != nAn0)
     if ((
nMe1 nMe0) || ((nMe1 == nMe0) && (nDi1 >= nDi0)))
      
nRes++;
    return 
nRes;
   }

   function 
mesesEntre(nDi0nMe0nAn0nDi1nMe1nAn1){
    var 
nRes;
    if ((
nMe1 nMe0) || ((nMe1 == nMe0) && (nDi1 nDi0))) nMe1 += 12;
    
nRes Math.max(0nMe1 nMe0 1);
    if ((
nDi1 nDi0) && (nMe1 != nMe0)) nRes++;
    return 
nRes;
   }

   function 
diasEntre(nDi0nMe0nAn0nDi1nMe1nAn1){
    var 
nRes;
    if (
nDi1 nDi0nDi1 += finMes(nMe0nAn0);
    
nRes Math.max(0nDi1 nDi0);
    return 
nRes;
   }

   function 
mayorOIgual(nDi0nMe0nAn0nDi1nMe1nAn1){
    var 
bRes false;
    
bRes bRes || (nAn1 nAn0);
    
bRes bRes || ((nAn1 == nAn0) && (nMe1 nMe0));
    
bRes bRes || ((nAn1 == nAn0) && (nMe1 == nMe0) && (nDi1 >= nDi0));
    return 
bRes;
   }

   function 
calcula(){
    var 
sFc0 document.frm.fecha0.value// Se asume válida
    
var sFc1 document.frm.fecha1.value// Se asume válida
    
var nDi0 parseInt(sFc0.substr(02), 10);
    var 
nMe0 parseInt(sFc0.substr(32), 10);
    var 
nAn0 parseInt(sFc0.substr(64), 10);
    var 
nDi1 parseInt(sFc1.substr(02), 10);
    var 
nMe1 parseInt(sFc1.substr(32), 10);
    var 
nAn1 parseInt(sFc1.substr(64), 10);
    if (
mayorOIgual(nDi0nMe0nAn0nDi1nMe1nAn1)){
     var 
nAno anosEntre(nDi0nMe0nAn0nDi1nMe1nAn1);
     var 
nMes mesesEntre(nDi0nMe0nAn0nDi1nMe1nAn1);
     var 
nDia diasEntre(nDi0nMe0nAn0nDi1nMe1nAn1);
     var 
nTtM nAno 12 nMes;
     var 
nTtD nDia;
     for (var 
nAn0nAn0 nAnoi++) nTtD += diasDelAno(nAno);
     for (var 
nMe0nMe0 nMesj++) nTtD += finMes(jnAn1);
     var 
nTSS Math.floor(nTtD 7);
     var 
nTSD nTtD 7;
     
document.frm.difDMA.value String(nAno) + " años, " String(nMes) + " meses, " String(nDia) + " días";
     
document.frm.difDM.value String(nTtM) + " meses, " String(nDia) + " días";
     
document.frm.difD.value String(nTtD) + " días";
     
document.frm.difSD.value String(nTSS) + " semanas, " String(nTSD) + " días";
    } else 
alert("Error en rango");
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   <table border="0">
    <tr>
     <td>
      <table border="1">
       <tr>
        <td align="right">
         Fecha inicial (dd/mm/aaaa)
        </td>
        <td>
         <input type="text" name="fecha0" value="31/08/1996">
        </td>
       </tr>
       <tr>
        <td align="right">
         Fecha final (dd/mm/aaaa)
        </td>
        <td>
         <input type="text" name="fecha1" value="09/07/1999">
        </td>
       </tr>
       <tr>
        <td align="right">
         Diferencia (D,M,A)
        </td>
        <td>
         <input type="text" name="difDMA" readonly>
        </td>
       </tr>
       <tr>
        <td align="right">
         Diferencia (D,M)
        </td>
        <td>
         <input type="text" name="difDM" readonly>
        </td>
       </tr>
       <tr>
        <td align="right">
         Diferencia (D)
        </td>
        <td>
         <input type="text" name="difD" readonly>
        </td>
       </tr>
       <tr>
        <td align="right">
         Diferencia (SD)
        </td>
        <td>
         <input type="text" name="difSD" readonly>
        </td>
       </tr>
      </table>
     </td>
    </tr>
    <tr>
     <td align="center">
      <input type="button" value="Calcular" onclick="calcula()">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html> 
  Responder Con Cita
Antiguo 29/04/03, 10:55:38   #122 (permalink)
Moderador extraterrestre
KarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karma
 
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
Contactar con KarlanKas a través de MSN Contactar con KarlanKas a través de Yahoo
KarlanKas is offline  
124.- Controlar que se rellenan todos los campos

P.- ¿Cómo indicar a un visitante de un formulario que se ha dejado campos sin rellenar?
R.- Estando delante cuando lo rellene o de esta manera:
Se pueden poner todos los campos que se quiera.


Código PHP:
<html>
<
head>

    <
script>
    
//Script original de KarlanKas para Forosdelweb.com


    
function comprobar(){var mal=false;
    
numero=document.forms[0].elements.length;
    for(
a=0;a<numero;a++){
    if (
document.forms[0].elements[a].value==""){document.forms[0].elements[a].style.backgroundColor="#ffffcc";mal=true;}
    else{
document.forms[0].elements[a].style.backgroundColor="white";}
    }
    if(
mal){alert("Por favor, rellene las cajas coloreadas");}
    else{
document.forms[0].submit()}
    }
    
    
</script>
</head>

<body>
<form action="javascript:alert('enviando')"
      method="post"
      name="formulario"
      id="formulario"
      style="font:normal 10px/10px verdana;border:solid 1px black;text-align:right;width:300px;"
      >
      Nombre: <input type="text"
             name="cosa"
             id="cosa"><br>
      Apellidos: <input type="text"
             name="cosa"
             id="cosa"><br>
      Dirección: <input type="text"
             name="cosa"
             id="cosa"><br>
      Nombre del perro: <input type="text"
             name="cosa"
             id="cosa"><br>
      Pais: <input type="text"
             name="cosa"
             id="cosa"><br>
      Conocidos con perro: <input type="text"
             name="cosa"
             id="cosa"><br>
             <input onclick="comprobar()"
                     type="button"
                    name="enviar"
                    value="Enviar!">
    
      
      
      
      </form>


</body>
</html> 
__________________
Experto: persona que ha cometido todos los errores que se pueden cometer en un determinado campo.
No visites mi blog.

Última edición por KarlanKas fecha: 04/01/05 a las 10:48:17.
  Responder Con Cita
Antiguo 29/04/03, 11:11:43   #123 (permalink)
Moderador extraterrestre
KarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karma
 
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
Contactar con KarlanKas a través de MSN Contactar con KarlanKas a través de Yahoo
KarlanKas is offline  
125.- Contar caracteres iguales seguidos en un input

P.-Cómo saber si han rellenado un input con varios caracteres iguales?
R.-Por medio de este script:

Tema: Formularios


Código PHP:
<html>
<
head>
    <
title>Contando letritas</title>
    <
script>
//Script original de KarlanKas para Forosdelweb.com


    
record=0;
    
igual=1;
    var 
letraRecord
    
var b=0
    
var letra=""
    
function comprobar(esto){
    
    for (
a=1;a<esto.length;a++){
    
    if (
esto.charAt(a)==esto.charAt(b)){
    
igual=igual+1;
    
letra=esto.charAt(a);}
    else{
    if(
igual>record){record=igual;letraRecord=letra}
    
igual=1
    
}
    
b=a
    
}
    if(
igual>record){record=igual;letraRecord=letra}
    if (
record>1){alert("La letra que más se repite es la "+letraRecord+" que aparece seguida "+record+" veces.")}
    else {
alert("Ninguna letra se repite seguida");}
    }
    
</script>
</head>

<body>
<form action="javascript:alert('HOLAA!!')"
      method="post"
      name="formuario"
      id="formuario">
      
      <input type="text"
             name="caja"
             size="130"
             onblur="comprobar(this.value)">
      
      
      </form>


</body>
</html> 
Dernuke propone una versión usando expresiones regulares y propone algún variante:

Código:
<html>
<head>
<title>Contando letritas</title>
<script>
// por derkeNuke
function comprobar(str) {


    var res=str.match(/([a-z]){1}\1+/gi);
    
    
    mensaje="Las repeticiones de letras seguidas son: \r";
    for(a=0; a<res.length; a++)
        mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
    alert(mensaje);
    
    
    // si queremos ordenar el resultado de mayor a menor repeticion:
    res.sort( function(a,b) {
        if(a.length>b.length) return -1;
        else if(a.length==b.length) return 0;
        else return 1;
    } );
    
    
    mensaje="Las repeticiones de letras seguidas ya ordenadas son: \r";
    for(a=0; a<res.length; a++)
        mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r";
    alert(mensaje);
    
    
}
</script>
</head>

<body>
<form action="javascript:alert('HOLAA!!')"
      method="post"
      name="formuario"
      id="formuario">
       
      <input type="text"
             name="caja"
             size="130"
             value="eqewwqFaaaasscccFasaeqw"
             onblur="comprobar(this.value)">
      </form>


</body>
</html>
__________________
Experto: persona que ha cometido todos los errores que se pueden cometer en un determinado campo.
No visites mi blog.

Última edición por KarlanKas fecha: 02/08/05 a las 07:45:52.
  Responder Con Cita
Antiguo 29/04/03, 11:25:29   #124 (permalink)
Moderador extraterrestre
KarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karma
 
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
Contactar con KarlanKas a través de MSN Contactar con KarlanKas a través de Yahoo
KarlanKas is offline  
126.- Botones de indicación de navegación

P.- Me gustaría saber cómo puedo hacer para que además de que mis botones cambien de imagen cuando paso por encima con el ratón (de imagen A a Imagen B), también cambie a una tercera imagen diferente cuando hago ‘clic’ con el ratón sobre el botón, y que permanezca así hasta que pinche con el ratón en otra opción diferente del menú, momento en el que el enlace anteriormente abierto debe volver a la imagen A.

R.- Con este código:

Código PHP:
<html>
<
head>

    <
script>
    
//Script original de KarlanKas para forosdelweb.com
    
var imagen=new Array;
    
imagen[0]=new Image;
    
imagen[0].no=new Image();
    
imagen[0].pincha=new Image();
    
imagen[0].si=new Image();
    
    
imagen[1]=new Image;
    
imagen[1].no=new Image();
    
imagen[1].pincha=new Image();
    
imagen[1].si=new Image();

    
imagen[2]=new Image;
    
imagen[2].no=new Image();
    
imagen[2].pincha=new Image();
    
imagen[2].si=new Image();

    
imagenAnterior=new Image;
    
    var 
numeroAnterior=0
//--------- PON AQUÍ LA RUTA DE LAS IMÁGENES (NO HAN DE SER ABSOLUTAS)---------------
    
    
imagen[0].no.src="no.gif";
    
imagen[0].pincha.src="hazclick.gif";
    
imagen[0].si.src="si.gif";
    
    
imagen[1].no.src="no1.gif";
    
imagen[1].pincha.src="hazclick1.gif";
    
imagen[1].si.src="si1.gif";
    
    
imagen[2].no.src="no2.gif";
    
imagen[2].pincha.src="hazclick2.gif";
    
imagen[2].si.src="si2.gif";
    
    

//------------------------------------------------------------------------------------    
    
function cliqueo(esto,numero){
    
imagenAnterior.src=imagen[numeroAnterior].no.src;
    
imagenAnterior=esto;
    
numeroAnterior=numero
    esto
.src=(esto.src!=imagen[numero].si.src)?imagen[numero].si.src:imagen[numero].no.src;
    }
    
    
</script>
    </head>

<body>
<a onfocus="this.blur()" href=#>
    <img     
            border=0 
            src="no.gif" 
            onclick="cliqueo(this,0)"
            onmouseover="if (this.src==imagen[0].no.src){this.src=imagen[0].pincha.src}"
            onmouseout="if (this.src==imagen[0].pincha.src){this.src=imagen[0].no.src}"
            >
</a>

<a onfocus="this.blur()" href=#>
    <img     border=0 
            src="no1.gif" 
            onclick="cliqueo(this,1)"
            onmouseover="if (this.src==imagen[1].no.src){this.src=imagen[1].pincha.src}"
            onmouseout="if (this.src==imagen[1].pincha.src){this.src=imagen[1].no.src}"
            >
</a>

<a onfocus="this.blur()" href=#>
    <img     border=0 
            src="no2.gif" 
            onclick="cliqueo(this,2)"
            onmouseover="if (this.src==imagen[2].no.src){this.src=imagen[2].pincha.src}"
            onmouseout="if (this.src==imagen[2].pincha.src){this.src=imagen[2].no.src}"
            >
</a>
</body>
</html> 
__________________
Experto: persona que ha cometido todos los errores que se pueden cometer en un determinado campo.
No visites mi blog.

Última edición por KarlanKas fecha: 04/01/05 a las 10:50:08.
  Responder Con Cita
Antiguo 29/04/03, 11:28:54   #125 (permalink)
Moderador extraterrestre
KarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karmaKarlanKas tiene un muy buen nivel de karma
 
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
Contactar con KarlanKas a través de MSN Contactar con KarlanKas a través de Yahoo
KarlanKas is offline  
127.- Rellenar cajas de texto con select de un pop up

P.- Cómo rellenar cajas de texto con elementos seleccionados de un pop up?

R.- Con este código:

Tema:Formularios

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<
html>
<
head>
    <
title>Untitled</title>
    <
script>
//Script original de KarlanKas para forosdelweb.com

    
camisa=["Seleccione...","Roja","Verde","Amarilla"];
    
pantalon=["Seleccione...","De campana","pitillo","chino","pata de elefante"]
    
sombrero=["Seleccione...","De Ala Ancha","Hongo","Chistera","Boina","Gorra"]

    function 
elegir(esto){

    
lista=esto.value
    opcion
=eval(lista);
    
codigo='<select style="font: normal 10px/20px verdana; color: navy" name="opciones" onChange="opener.formulario.enviar.disabled=false;opener.formulario.que'+lista+'.value=unescape(this.options.value); self.close()" >';
    for (
a=0;a<opcion.length;a++){
    
codigo+="<option value="+escape(opcion[a])+">"+opcion[a]+"</option>\n";
    }
    
codigo+="</select>";

    
pepe=window.open('','','width=200,height=50');
    
pepe.document.write("<html>");
    
pepe.document.write("<head>");
    
pepe.document.write("    <title>Elige Opción</title>");
    
pepe.document.write("</head>");
    
pepe.document.write('<body bgcolor="#ffffcc">');
    
pepe.document.write(codigo);
    
pepe.document.write("</body>");
    
pepe.document.write("</html>");
    }
    
    
</script>
</head>

<body>
<form action="javascript:alert('Enviandooo!!')"
      name="formulario"
      id="formulario"
      style="font: normal 10px/20px verdana; color: navy"
      title="Elige que comprar">
      <input type="radio"
             name="opcion"
             value="camisa"
             onClick="elegir(this)">camisa<br>
    <input style="border:solid 1px black" type="text"
           name="quecamisa"
           readonly><br>
           
    <input type="radio"
             name="opcion"
             value="pantalon"
             onClick="elegir(this)">pantalón<br>
             
    <input style="border:solid 1px black" type="text"
           name="quepantalon"
           readonly><br>
                
    <input type="radio"
             name="opcion"
             value="sombrero"
             onClick="elegir(this)">sombrero<br>
             
    <input style="border:solid 1px black" type="text"
           name="quesombrero"
           readonly><br><br>
           
    
                      
    <input     style="heigth:15px;font: normal 10px/10px verdana; color: navy"