29/04/03, 10:42:04
|
#121 (permalink)
|
|
Colaborador
Registrado: nov 2002
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.124
|
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(sVal, nPos){
var sRes = sVal;
for (var i = sVal.length; i < nPos; i++)
sRes = "0" + sRes;
return sRes;
}
function armaFecha(nDia, nMes, nAno){
var sRes = cerosIzq(String(nDia), 2);
sRes = sRes + "/" + cerosIzq(String(nMes), 2);
sRes = sRes + "/" + cerosIzq(String(nAno), 4);
return sRes;
}
function sumaMes(nDia, nMes, nAno, nSum){
if (nSum >= 0){
for (var i = 0; i < Math.abs(nSum); i++){
if (nMes == 12){
nMes = 1;
nAno += 1;
} else nMes += 1;
}
} else {
for (var i = 0; i < Math.abs(nSum); i++){
if (nMes == 1){
nMes = 12;
nAno -= 1;
} else nMes -= 1;
}
}
return armaFecha(nDia, nMes, nAno);
}
function esBisiesto(nAno){
var bRes = true;
res = bRes && (nAno % 4 == 0);
res = bRes && (nAno % 100 != 0);
res = bRes || (nAno % 400 == 0);
return bRes;
}
function finMes(nMes, nAno){
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 28; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes + (((nMes == 2) && esBisiesto(nAno))? 1: 0);
}
function diasDelAno(nAno){
var nRes = 365;
if (esBisiesto(nAno)) nRes++;
return nRes;
}
function anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
var nRes = Math.max(0, nAn1 - nAn0 - 1);
if (nAn1 != nAn0)
if ((nMe1 > nMe0) || ((nMe1 == nMe0) && (nDi1 >= nDi0)))
nRes++;
return nRes;
}
function mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
var nRes;
if ((nMe1 < nMe0) || ((nMe1 == nMe0) && (nDi1 < nDi0))) nMe1 += 12;
nRes = Math.max(0, nMe1 - nMe0 - 1);
if ((nDi1 > nDi0) && (nMe1 != nMe0)) nRes++;
return nRes;
}
function diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
var nRes;
if (nDi1 < nDi0) nDi1 += finMes(nMe0, nAn0);
nRes = Math.max(0, nDi1 - nDi0);
return nRes;
}
function mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){
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(0, 2), 10);
var nMe0 = parseInt(sFc0.substr(3, 2), 10);
var nAn0 = parseInt(sFc0.substr(6, 4), 10);
var nDi1 = parseInt(sFc1.substr(0, 2), 10);
var nMe1 = parseInt(sFc1.substr(3, 2), 10);
var nAn1 = parseInt(sFc1.substr(6, 4), 10);
if (mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1)){
var nAno = anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
var nMes = mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
var nDia = diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);
var nTtM = nAno * 12 + nMes;
var nTtD = nDia;
for (var i = nAn0; i < nAn0 + nAno; i++) nTtD += diasDelAno(nAno);
for (var j = nMe0; j < nMe0 + nMes; j++) nTtD += finMes(j, nAn1);
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>
|
|
|
|
29/04/03, 10:55:38
|
#122 (permalink)
|
|
Moderador extraterrestre
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
|
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.
|
|
|
|
29/04/03, 11:11:43
|
#123 (permalink)
|
|
Moderador extraterrestre
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
|
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.
|
|
|
|
29/04/03, 11:25:29
|
#124 (permalink)
|
|
Moderador extraterrestre
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
|
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.
|
|
|
|
29/04/03, 11:28:54
|
#125 (permalink)
|
|
Moderador extraterrestre
Registrado: nov 2002
Ubicación: Madrid
Mensajes: 6.783
|
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"
  | |