Я разрабатываю веб-приложение, в котором у меня есть опция загрузки файла.Дело в том, что мой ввод файла скрыт, и вместо этого используются текстовое поле и кнопка, чтобы стилизовать ввод, скопировать значение ввода файла и позволить пользователю записать адрес ссылки в текстовое поле (страница загрузки php распознаеттекст в текстовом поле и выполняет действие, если текст является гиперссылкой или загрузкой файла).
Проблема в том, что когда я отправляю форму, php ловит значение ввода файла как пустое.Поэтому я удалил скрытое свойство входного файла, чтобы проверить, что было не так, и заметил, что значение ввода сбрасывается при отправке формы.Когда я не спрятан, мне требуется два нажатия кнопки, чтобы отправить форму, и я первый отвечаю за очистку файла ввода.Хотя, если я присваиваю его значение непосредственно из объекта ввода, оно отлично работает.
Что происходит?
Вот код:
<form name="frmProject" id="frmProject" method="post" target="uploadTrg" enctype="multipart/form-data" action="upload.php">
<div>
<input type="textbox" class="frmObject" name="fakeFile" id="fakeFile" />
<button type="button" class="frmObject" id="btnFile" >
<img src="images/open.png" height="20" />
</button><br />
<input type="file" id="trueFile" name="trueFile" />
</div>
<input type="button" class="frmObject" id="postDetailButton" value="Save" />
</form>
Принимая javascriptдействие в процессе отправки (и обработки формы) заключается в следующем:
$("#trueFile").live("change", function(){
$("#fakeFile").val($(this).val());
});
$("#postDetailButton").live("click", function(){
$("#frmProject").submit();
});
$("#btnFile").live("click", function(){
$("#trueFile").trigger("click");
});