Как мне установить максимальный номер ввода из базы данных в JavaScript? - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу установить максимальное число входных данных в «тип ввода = число» на основе суммы в базе данных.В настоящее время я пытаюсь, чтобы он работал на базе данных max, прежде чем пытаться получить максимальное значение из своей базы данных, однако, похоже, оно не работает.

Это было задано ранее здесь, однако я не могу понятьэто все еще: Установить максимальное количество вводимого текста из базы данных в php / javascript

HTML:

 <div class="ui-block-a">
                                    <div id="test">
                                        <input type="button" value="-" class="minus" id="jumlah" name="jumlah">
                                    </div>
                                </div>

                                <div class="ui-block-b">

                                    <input type="number" min="1" max="10" id="quantity" value="0" name="quantity" title="Qty" class="input-text qty text" size="6" pattern="" inputmode="" data-max="3" onkeyup="check(this);" readonly>

                                </div>

                                <div class="ui-block-c">
                                    <div id="test2">
                                        <input type="button" value="+" class="plus" id="jumlah2" name="jumlah2">
                                    </div>
                                </div>

JS:

function check(quantity) {
    div.addEventListener('click', function () { });
    var max = quantity.getAttribute("data-max");
    if (parseInt(quantity.value) > parseInt(max)) {
        alert("Amount out of max!");
    }
}

1 Ответ

0 голосов
/ 05 декабря 2018

На основании предоставленной вами информации трудно понять, что именно вы пытаетесь выполнить и в чем заключается проблема (т.е. вы упоминаете зависимость от базы данных и 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"

Предполагая, что это то, что ты пытаешься достичь тогда ...

  1. Вам необходимо переместить обработчик событий (декремент ()) на кнопки ввода, а не на поле ввода текста, поскольку кнопки - это то, что принимает пользовательские события.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/

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...