Haz un test con esto:
Código HTML:
Ver originalAgregar fecha:
<input type="text" id="test"> <input type="button" onclick="addFecha('test', 'contenedor', 'datafechas', 'claseFechas', 1970, '/', 'deleteFecha');" value="test"/><form method="post" action="fechas.php"> <input type="submit" value="test" name="test" />
Código Javascript
:
Ver originalfunction isDate(val, delimiter, yearBottomLimit){
var date = val.split(delimiter);
if(date.length == 3){
var d = date[0];
var m = date[1];
var y = date[2];
if(!isNaN(d) && !isNaN(m) && !isNaN(y)){
d = parseFloat(d);
m = parseFloat(m);
y = parseFloat(y);
if(Number.isInteger(d) && Number.isInteger(m) && Number.isInteger(y)){
if(y >= yearBottomLimit && m >= 1 && m <= 12){
var m_31 = [1, 3, 5, 7, 8, 10, 12];
var maxDay = 30;
if(m_31.indexOf(m) != -1){
maxDay = 31;
}
else if(m == 2){
maxDay = 28;
if(y%4 == 0 && (y%100 != 0 || y%400 == 0)){
maxDay = 29;
}
}
if(d >= 1 && d <= maxDay){
return true;
}
}
}
}
}
return false;
}
function addFecha(creatorID, contener, postName, styleClass, yearBottomLimit, delimiter, callback){
var creator = document.getElementById(creatorID);
var date = creator.value; //get value of date input
if(!isDate(date, delimiter, yearBottomLimit)){ alert("Enter a valid date"); return 0; } //validate date
/* Setting date correctly */
var dateArr = date.split(delimiter);
dateArr[0] = parseInt(dateArr[0]);
dateArr[1] = parseInt(dateArr[1]);
dateArr[2] = parseInt(dateArr[2]);
date = dateArr[0]+delimiter+dateArr[1]+delimiter+dateArr[2];
/* end */
/* all input date input data stuff */
var cont = document.getElementById(contener);
var fecha = document.createElement("INPUT");
fecha.setAttribute("type", "text");
fecha.setAttribute("value", date);
fecha.setAttribute("name", postName+"[]");
fecha.setAttribute("readonly", "");
fecha.setAttribute("class", styleClass);
fecha.setAttribute("onclick", "this.blur();");
cont.appendChild(fecha);
/* end date input */
/* creating a delete button */
var deleter = document.createElement("INPUT");
deleter.setAttribute("type", "button");
deleter.setAttribute("value", "Eliminar");
deleter.setAttribute("onclick", callback+"(this, '"+contener+"');");
cont.appendChild(deleter);
/* end delete button */
/* creating jump element */
var jumper = document.createElement("BR");
cont.appendChild(jumper);
/* end jump element */
creator.value = ""; //reset value of adder
}
function deleteFecha(deleter, contener){
var cont = document.getElementById(contener);
/* getting index of the self deleter button */
var index = 0;
while ((deleter = deleter.previousElementSibling)){
index++;
}
/* end getting index */
var e1 = cont.childNodes[index-1];
var e2 = cont.childNodes[index];
var e3 = cont.childNodes[index+1];
cont.removeChild(e1);
cont.removeChild(e2);
cont.removeChild(e3);
}
fechas.php
Código PHP:
Ver originalfor($k=0;$k<sizeof($_POST["datafechas"]);$k++){ echo $_POST["datafechas"][$k]."<br/>";
}
Te explico las funciones js:
isDate: verifica que una fecha este correcta con formado dd mm yyyy, parametros:
val: Valor de la fecha
delimiter: El delimitador de la fecha ex. 12/12/12 delimitador "/"
yearBottomLimit: Como muchos servidores usan tiempo unix, es decir, con años mayores o iguales a 1970 por escalabilidad puse ese parametro
addFecha: genera un campo de texto con la fecha, un boton para eliminar y elemento de salto, a un contenedor, Parametros
creatorID: Id del input que donde ingresas las fechas
contener: Id contenedor de los elementos a generar
postName: el numbre a usar en php para el php ex postName = "fechas" en php-> $_POST["fechas"]
styleClas: Por si quieres darle un estilo a los input fechas con el nombre de esa clase
yearBottomLimit: El mismo parametro que isDate
delimiter: el mismo parametro que isDate
callback: Como se llamará la funcion para eliminar fechas, en este caso te di el nombre deleteFecha
deleteFecha: Elimina el elemento, el elemento anterior y elemento posterior de un elemento, parametros
deleter: Objeto boton eliminar
contener: id del contenedor de fechas
Jaja me esmeré