Tengo un formulario html, con un campo de carga de archivo personalizado. Y con eso quiero decir que he movido el campo de archivo real más allá de los bordes de la página con css, que tengo un campo de entrada personalizado y un botón en su lugar, y que tengo un evento de clic de jquery adjunto a ese botón personalizado para activar el cuadro de diálogo de entrada de archivo. Todo funciona bien, en todos los navegadores.ie javascript form submit con entrada de archivo
Pero necesito enviar el formulario a través de javascript. Y llegué a algún lugar en el que IE recuerda mis acciones con javascript como una manipulación maliciosa del campo de entrada de archivo y bloquea mi acceso con un error "access denied"
cuando invoco document.formName.submit()
.
Hay una forma de evitar esto, porque me he enloquecido al tratar de buscar una solución. En serio, no quiero utilizar el campo de entrada de archivos por defecto, ya que cada navegadores hace que sea diferente y desordena mi diseño ..
código:
<form name="thisForm" onsubmit="return false;" enctype="multipart/form-data" method="post" action="index.cfm/somepage">
<input type="file" class="hidden" name="hidden" id="hidden" />
<input type="text" name="shown" id="shown" />
<button id="button">browse..</button>
<input type="submit" id="submitForm" />
</form>
<script>
$('button').click(function(){
$('#shown').val($('#hidden').val());
});
$('submitForm').click(function(){
validateForm();
});
function validateForm()
{
//regular expression validation against all other input fields in the form
//not the file input field
validateVAT();
}
function validateVAT()
{
//connect to external service to check VAT
submitForm();
}
function submitForm()
{
document.thisForm.submit();
}
</script>
ACTUALIZACIÓN: Sólo traté de primera cargar el archivo, antes de enviar el formulario, a través de ajax, pero que también me dio el acceso denegado error ..> _>
Se puede publicar su campo Archivo código de manipulación? ¡Nunca antes había visto ese error en IE! –
Este artículo aborda las opciones de diseño para entradas de archivos y soluciones JS que pueden ayudar: http://www.quirksmode.org/dom/inputfile.html –
adrianlynch: el código (en su forma básica) ya está allí: el primer evento de clic . Solo transfiero el valor del campo oculto al campo de entrada visible. diodeus: eso no funciona, básicamente hace lo que hago, obteniendo el valor del campo oculto .. – dreagan