У меня есть несколько дропзон (элемент загрузки), в которых элементы предварительного просмотра отображаются для каждого добавляемого файла. Каждый предварительный просмотр имеет поле ввода номера.
Каждая дропзона - это форма, которая имеет скрытое поле ввода со значением в нем, это значение является общей допустимой суммой всех полей ввода внутри элемента дропзоны.
Так, например:
Dropzone 1 has total sum of: 10
And two previews with inputs, then for example this is possible:
input1: 10
input2: 0
Or
input1: 5
input2:5
etc
, пока общая сумма составляет 10
. Вы не должны быть в состоянии превысить 10
или когда, например, input1 имеет 3
в качестве значения, второй вход не должен превышать 7
et c.
Я попробовал следующее:
const attributeVal = $input;
attributeVal.on("change paste keyup input", function(e) {
let newVal = Math.floor($input.val());
newVal = Math.max(0, newVal);
newVal = Math.min(10, newVal);
const maxValue = parseInt(aantal);
let valueSpent = 0;
$input.not(this).each(function() {
valueSpent += +$input.val();
});
if (newVal + valueSpent > maxValue) {
// Invalid, reset these points to the maximum allowable:
newVal = maxValue - valueSpent;
}
// New value has been validated, put it into the DOM:
$input.val(newVal);
});
attributeVal.on("cut copy paste", function(e) {
e.preventDefault();
});
Где $input
- это поле ввода в текущем предварительном просмотре, а aantal
- общая сумма. Проблема в том, что (в данном случае aantal = 10
) каждое поле ввода может иметь 10
(оно не превышает), поэтому оно не видит значений других входных данных.
Я попытался изменить $input.not(this).each(function() {
на $input.each(function() {
но когда я добавляю два изображения и, таким образом, есть два поля ввода, я могу только от go до 5
в каждом. Итого 10
, так что это правильно, но невозможно добавить 9
в одном и 1
в другом, только до 5
в каждом.
Как я могу получить это результат?
Я добавил jsfiddle здесь: https://jsfiddle.net/ar2395bw/ (чтобы получить предварительный просмотр, вы можете перетащить файлы в большие поля или щелкнуть по ним и загрузить некоторые файлы).