Как очистить загруженные пользователем изображения, если превышен лимит файлов в jquery

У меня есть простая форма, в которой пользователь может загружать несколько изображений. Я хочу, чтобы пользователь загружал сразу 4 изображения, поэтому я сделал следующее:

$("#myfile").on("change", function() {
    if ($("#myfile")[0].files.length > 4) {
        alert("You can select only 4 images");
    } 
});
<input type = "file" id = "myfile" class = "form-control" name = "pimage[]" multiple = "multiple">

Это дает предупреждение, когда пользователь загружает более 4 изображений, но не мешает им отправлять форму.

Может ли кто-нибудь сказать мне, как очистить загруженные пользователем изображения, если лимит превышается, или отключить кнопку отправки?

как вы сказали, отключите кнопку .... добавьте отключенный атрибут .... это одна стратегия ....

Dimitris Papageorgiou 07.05.2022 07:15

@DimitrisPapageorgiou на самом деле я новичок в jquery, не могли бы вы рассказать мне, как это сделать, а также у меня есть сомнения, если мы отключим кнопку, можем ли мы снова включить ее, когда пользователь повторно загрузит файлы, чтобы исправить ограничение

Adheed nihal 07.05.2022 07:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
23
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В этом случае лучше создать еще одну переменную со статусом флага, а затем проверять ее перед отправкой формы.

Что-то подобное:

let flag = false;

$("#myfile").on("change", function() {
    if ($("#myfile")[0].files.length > 4) {
        alert("You can select only 4 images");
        flag = true;
    }
});

if (!flag){
    $('#form').submit();
}

это заставляет страницу автоматически перезагружаться несколько раз без остановки

Adheed nihal 07.05.2022 07:22

@Adheednihal Конечно. Вы должны сделать прослушиватель событий на кнопке «Отправить». На мой взгляд, лучше сделать просто кнопку или даже span с идентификатором и добавить прослушиватель событий при нажатии на нее. В этом случае вы будете проверять этот флаг только после нажатия. Также вы можете комбинировать это решение с приведенным ниже решением с помощью кнопки отключения.

Vetos 07.05.2022 07:28
Ответ принят как подходящий

Я реализую стратегию отключения атрибута, как я сказал в комментариях:

$("#myfile").on("change", function() {
if ($("#myfile")[0].files.length > 4) {
    alert("You can select only 4 images");
    $(".form-control").prop("disabled",true);
 } 
});

С приведенным выше кодом пользователь не сможет отправить форму

я пробовал это, это отключает кнопку, но как я могу снова включить ее, когда пользователь повторно загружает правильное количество файлов

Adheed nihal 07.05.2022 07:25

если я добавлю else { $("#thatbutton").prop("disabled",false); } , будет ли это иметь какие-либо проблемы

Adheed nihal 07.05.2022 07:28

@Adheednihal, вероятно, нет ... это то, что я все равно собирался предложить ... я просто не проверял это ... но если это работает, то, вероятно, вам хорошо идти

Dimitris Papageorgiou 07.05.2022 07:29

Другие вопросы по теме