Hola:
Con un retoque podrás solucionarlo... Ya que no te vale la punción prever(), basta con que cambies todo el código por un simple return (incluso ni eso...)
Y el método limpiar() es el que debes dejarlo tal cual, pero solo limpia un campo file con id="archivo", si tiene otro id o no tiene ninguno, debes hacerlo coincidir y isto...
Código:
function limpiar() {
f = document.getElementById("archivo");
nuevoFile = document.createElement("input");
nuevoFile.id = f.id;
nuevoFile.type = "file";
nuevoFile.name = "archivo";
nuevoFile.value = "";
nuevoFile.onchange = f.onchange;
nodoPadre = f.parentNode;
nodoSiguiente = f.nextSibling;
nodoPadre.removeChild(f);
(nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
}
function checkear_extension(fichero) {
function prever() {
return;
}
function no_prever() {
alert("El fichero seleccionado no es válido...");
limpiar();
}
(/\.(jpg|jpeg)$/i.test(fichero.value)) ? prever() : no_prever();
}
Código:
<input type="file" name="f" id="archivo" onchange="checkear_extension(this)" />
Saludos