У меня есть html-форма с пользовательским полем загрузки файлов. И я имею в виду, что я переместил фактическое поле файла за пределы страницы с помощью css, что у меня есть собственное поле ввода и кнопка на месте, и что у меня есть событие jquery click, прикрепленное к этой настраиваемой кнопке, чтобы вызвать диалог ввода файлов. Все работает отлично, в каждом браузере.
Но мне нужно отправить форму через javascript. И я получил где-то, что IE запоминает мои действия с javascript как вредоносную манипуляцию с полем ввода файла и блокирует мой доступ с ошибкой "access denied"
при вызове document.formName.submit()
.
Есть ли способ обойти это, потому что я совершенно с ума сошел, пытаясь найти решение. Я серьезно не хочу использовать поле ввода файлов по умолчанию, так как каждый браузер делает это по-другому и испортил мой дизайн.
код:
<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>
UPDATE: Я просто попытался сначала загрузить файл, прежде чем отправить форму, через ajax, но это также дало мне отказ от отказа в доступе.. > _ >