На основании предоставленной вами информации трудно понять, что именно вы пытаетесь выполнить и в чем заключается проблема (т.е. вы упоминаете зависимость от базы данных и php, ни на одну из которых нет ссылок в вашем коде.)Но, посмотрев на код, я расшифрую твою проблему как ...
"Trying to provide an 'Alert' when input field reaches a max number (specified by data-max attribute) after the the field value has been incremented or decremented by the +/- buttons"
Предполагая, что это то, что ты пытаешься достичь тогда ...
- Вам необходимо переместить обработчик событий (декремент ()) на кнопки ввода, а не на поле ввода текста, поскольку кнопки - это то, что принимает пользовательские события.thius также должен быть включен, потому что кнопки не получают события нажатия клавиш.У вас есть свойство readonly для ввода текста, поэтому я предполагаю, что его нельзя редактировать с помощью текста / клавиатуры?
<input type="button" value="-" onclick="decrement()" class="minus" id="jumlah" name="jumlah">
На самом деле вам нужно что-то делать с помощью кнопок увеличения / увеличения, если вы не обрабатываете эти события где-то еще.
function increment () {
let quantity = document.getElementById('quantity'),
newVal = Number(quantity.value) + 1;
if (!isOverMax()) {
quantity.value = newVal;
}
}
function decrement () {
let quantity = document.getElementById('quantity');
quantity.value = Number(quantity.value) - 1;
}
Вы должны вызывать функцию check () (переименованную в isOverMax (), чтобы сделать ее более декларативной и семантически правильной) после каждой функции приращения.
!isOverMax()
Вы должны добавить условие, чтобы фактически предотвратить увеличение поля ввода выше максимального, если это ваша цель.Один из способов сделать это - вернуть логическое значение из функции isOverMax ().
function isOverMax() {
let max = quantity.getAttribute("data-max");
if (parseInt(quantity.value) >= parseInt(max)) {
alert("Amount out of max!");
return true;
}
return false;
}
Этот код определенно может быть организован лучше, но он должен приблизить вас к тому, что выпытаясь выполнить.
Полный рабочий пример ...
https://jsfiddle.net/aguy2mwx/
Надеюсь, это поможет!