Skip to content

Instantly share code, notes, and snippets.

@MarcoBardalesRodriguez
Created November 8, 2023 16:07
Show Gist options
  • Save MarcoBardalesRodriguez/4870919c1fcd3c3052091cdbacd7b356 to your computer and use it in GitHub Desktop.
Save MarcoBardalesRodriguez/4870919c1fcd3c3052091cdbacd7b356 to your computer and use it in GitHub Desktop.
campos dinámicos con HTML y JS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form</title>
</head>
<body>
<form action="procesar.js" id="myForm:get">
<div id="container-inputs">
</div>
<button id="btn-add-group" type="button">agregar +</button>
<hr>
<button type="submit">enviar -></button>
</form>
<script>
const container = document.getElementById("container-inputs");
var elementIndex = 0;
var elementCounter = 0;
function createGroup() {
elementIndex++;
elementCounter++;
let elementGroup = document.createElement("div");
elementGroup.classList.add("group");
let btnDelete = document.createElement("button");
btnDelete.addEventListener('click', e => deleteGroup(e));
btnDelete.innerHTML = " - ";
let elementHTML = `
<label for="estudios-grupo-${elementIndex}-grado">Grado:</label>
<select name="estudios-grupo-${elementIndex}-grado" id="" pattern="^[A-Z]+">
<option value="">-- Seleccionar --</option>
<option value="Superior Tecnico">Superior Tecnico</option>
<option value="Superior Universitario">Superior Universitario</option>
<option value="Maestria">Maestria</option>
<option value="Doctorado">Doctorado</option>
<option value="Magister">Magister</option>
<option value="Otro">Otro</option>
</select>
<label for="estudios-grupo-${elementIndex}-nombre">Nombre:</label>
<input type="text" name="estudios-grupo-${elementIndex}-nombre" id="">
<label for="estudios-grupo-${elementIndex}-anno-egreso">Año de egreso:</label>
<input type="number" name="estudios-grupo-${elementIndex}-anno-egreso" id="" min="1990" placeholder="(opcional)">
`;
elementGroup.innerHTML = elementHTML;
elementGroup.appendChild(btnDelete);
console.log(elementIndex);
container.appendChild(elementGroup);
}
function deleteGroup(e) {
console.log("borrando...")
let target = event.target || event.srcElement;
let parent = target.parentElement
parent.innerHTML = "";
elementCounter--;
console.log(elementCounter);
}
document.getElementById("btn-add-group").addEventListener('click', () => {createGroup();});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment