Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сделать запрет выбора в input file (https://javascript.ru/forum/events/49473-kak-sdelat-zapret-vybora-v-input-file.html)

greenbuger 14.08.2014 16:46

Как сделать запрет выбора в input file
 
Долго бьюсь с проблемой, у меня есть пять
<input file name='foto1'>
<input file name='foto2'>
<input file name='foto3'>
<input file name='foto4'>
<input file name='foto5'>
Как сделать, что бы при выборе одинаковых картинок (одной и той же)
Выпадал алерт с оповещением, что такой фаил уже выбран:help:

ksa 14.08.2014 16:49

Цитата:

Сообщение от greenbuger
Как сделать, что бы при выборе одинаковых картинок (одной и той же)

Сравнить картинки, в общем смысле, может только сервер... В самом
<input type='file' name='foto*' />

Ничего про то нет...

У ИЕ вроде хоть путь хранится/хранился...

WorM32 14.08.2014 17:04

Можешь имена файлов проверять в this.value.

greenbuger 14.08.2014 19:42

Я дуб дубом в js. если можно приведите пример или ссылку дайте где посмотреть пример, что бы я сообразил. как я понимаю один из простых вариантов сравнить пути у input file и если они совпадают, вызвать сообщение о повторном выборе картинки:help:

WorM32 14.08.2014 20:51

<input type="file">
<input type="file">
<input type="file">
<script>
var files = Array.prototype.slice.call(document.querySelectorAll('input[type=file]'), 0),
    fileValues = [];

files.forEach(function (file, index) {
    file.addEventListener('change', onFileChange);
    fileValues[index] = '';
});

function onFileChange() {
    try {
         var fileName = /([\w\d]+\.[\w\d]+)$/i.exec(this.value)[1]; // простая регулярка для примера. в имени файла допустимы только латинские буквы и цифры
    } catch (e) {
        alert('Упс, что-то не так с именем файла.');
        return;
    }
    if (fileValues.indexOf(fileName) > -1) {
        this.value = null;
        alert('Файл с такими именем уже существует.');
        return;
    }
    var fileIndex = files.indexOf(this);
    fileValues[fileIndex] = fileName;
}</script>

greenbuger 14.08.2014 22:57

Спасибо огромное, вы просто господь бог для меня теперь)


Часовой пояс GMT +3, время: 22:47.