Отключить кнопку отправки, пока файл не будет выбран для загрузки
У меня есть форма для загрузки изображений. Я хочу отключить кнопку отправки, пока пользователь не выберет изображение для загрузки. Я хотел бы сделать это с помощью jQuery. В настоящее время у меня есть функция JavaScript, которая запрещает пользователю отправлять форму более одного раза, отключив ее при отправке. Было бы неплохо совместить эту функциональность с новой.
Вот что у меня сейчас есть:
<script type="text/javascript">
function submitonce(theform) {
//if IE 4+ or NS 6+
if (document.all || document.getElementById) {
//screen thru every element in the form, and hunt down "submit" and "reset"
for (i = 0; i < theform.length; i++) {
var tempobj = theform.elements[i]
if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
//disable em
tempobj.disabled = true
}
}
}
</script>
<form name="form" enctype="multipart/form-data" method="post" action="upload.php" onSubmit="submitonce(this)">
<input type="file" name="my_field" value="" />
<input type="submit">
</form>
Ответы
Ответ 1
Следующее, похоже, надежно работает в Chrome и Firefox (Ubuntu 10.10), я не могу проверить на других платформах в данный момент:
JQuery
$(document).ready(
function(){
$('input:file').change(
function(){
if ($(this).val()) {
$('input:submit').attr('disabled',false);
// or, as has been pointed out elsewhere:
// $('input:submit').removeAttr('disabled');
}
}
);
});
HTML
<form action="#" method="post">
<input type="file" name="fileInput" id="fileInput" />
<input type="submit" value="submit" disabled />
</form>
<div id="result"></div>
Демо в JS Fiddle.
Ответ 2
Слегка более простой способ использования prop(), который, я думаю, является предпочтительным способом сделать это сейчас:
$('input:file').on("change", function() {
$('input:submit').prop('disabled', !$(this).val());
});
Протестировано в IE, Chrome и FireFox.
Ответ 3
Try
$('#my_uploader').change(function() {
if($(this).val()) {
$('#my_submit_button').attr('disabled', '');
} else {
$('#my_submit_button').attr('disabled', 'disabled');
}
});
Ответ 4
Если вы поклонник тройных выражений:
$(document).ready(function(){
var $submit = $('#submit_document');
var $file = $('#file_path');
$file.change(
function(){
$submit.attr('disabled',($(this).val() ? false : true));
}
);
});
Ответ 5
Вместо того, чтобы отключить отправку, потенциально более полезно предложить инструкцию, если пользователь нажимает ее, не выбрав файл сначала? Итак, добавьте что-то вроде этого в качестве кода отправки?
var bFileEmpty = !document.getElementById('filControl').value; if (bFileEmpty) alert('Please select a file'); return !bFileEmpty;
Обратите внимание, что для управления вашими файлами потребуется идентификатор и имя