Netbean: проверка плюс минус количество влияет на каждую строку в цикле - PullRequest
0 голосов
/ 13 июля 2020

Итак, я реализовал окно проверки количества плюс / минус для каждого элемента в строке за строкой, когда пользователь может добавить или минус любую сумму. Но дело в том, что когда я пытаюсь отрегулировать количество для одной строки, это влияет и на несколько других строк, как мне обойти это? так как я не могу указать oop идентификатор рядом с кнопками, а javascript принимает один полный класс, c одну единственную кнопку. Я застрял.

<tbody id="AmountTableBody">

  <%                        try {
                            for (int i = 0; i < size.size(); i++) { //imagine size is taking 2+ items
                    %>
 <tr>
    <td>
      <div id="AmountContentColumn">
        <div class="flex-column" id="amount">
          <label id="amount" class="label" for="amount<%=i%>">Amount:</label>
          <div class="input-group">
            <span class="input-group-btn">
                                            <button id="amount<%=i%>" type="button" class="btn btn-default btn-number" disabled="disabled" data-type="minus" data-field="quant[1]">
                                                <span class="fa fa-minus-square"></span>
            </button>
            </span>
            <input type="text" name="quant[1]" class="form-control input-number textpadding" size="2" value="1" min="1" max="10">
            <span class="input-group-btn">
                                            <button id="amount<%=i%>" type="button" class="btn btn-default btn-number" data-type="plus" data-field="quant[1]">
                                                <span class="fa fa-plus-square "></span>
            </button>
            </span>
          </div>
          <p>
        </div>
      </div>
    </td>
</tr>
       <%
                            }
                        } catch (Exception ex) {
                            System.out.println(ex);
                        }
                    %>

  $('.btn-number').click(function (e) {
                            e.preventDefault();

                            fieldName = $(this).attr('data-field');
                            type = $(this).attr('data-type');
                            var input = $("input[name='" + fieldName + "']");
                            var currentVal = parseInt(input.val());
                            if (!isNaN(currentVal)) {
                                if (type == 'minus') {

                                    if (currentVal > input.attr('min')) {
                                        input.val(currentVal - 1).change();
                                    }
                                    if (parseInt(input.val()) == input.attr('min')) {
                                        $(this).attr('disabled', true);
                                    }

                                } else if (type == 'plus') {

                                    if (currentVal < input.attr('max')) {
                                        input.val(currentVal + 1).change();
                                    }
                                    if (parseInt(input.val()) == input.attr('max')) {
                                        $(this).attr('disabled', true);
                                    }

                                }
                            } else {
                                input.val(0);
                            }
                        });
                        $('.input-number').focusin(function () {
                            $(this).data('oldValue', $(this).val());
                        });
                        $('.input-number').change(function () {

                            minValue = parseInt($(this).attr('min'));
                            maxValue = parseInt($(this).attr('max'));
                            valueCurrent = parseInt($(this).val());

                            name = $(this).attr('name');
                            if (valueCurrent >= minValue) {
                                $(".btn-number[data-type='minus'][data-field='" + name + "']").removeAttr('disabled')
                            } else {
                                alert('Sorry, the minimum value was reached');
                                $(this).val($(this).data('oldValue'));
                            }
                            if (valueCurrent <= maxValue) {
                                $(".btn-number[data-type='plus'][data-field='" + name + "']").removeAttr('disabled')
                            } else {
                                alert('Sorry, the maximum value was reached');
                                $(this).val($(this).data('oldValue'));
                            }


                        });
                        $(".input-number").keydown(function (e) {
                            // Allow: backspace, delete, tab, escape, enter and .
                            if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
                                    // Allow: Ctrl+A
                                            (e.keyCode == 65 && e.ctrlKey === true) ||
                                            // Allow: home, end, left, right
                                                    (e.keyCode >= 35 && e.keyCode <= 39)) {
                                        // let it happen, don't do anything
                                        return;
                                    }
                                    // Ensure that it is a number and stop the keypress
                                    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
                                        e.preventDefault();
                                    }
                                });

1 Ответ

0 голосов
/ 16 июля 2020

Итак, javascript вызывает указанное c имя, поле данных. Таким образом, вам потребуется al oop id рядом с ними <%=i%> в html и $('.btn-number').click(function () { IDoutput = $(this).attr("value"); }); в javascript с переменной IDoutput, которая полезна для получения идентификатора, генерируемого каждый раз. И добавление + IDoutput рядом с каждым полем ввода-номера, которое затем может принимать каждый раз указанный c ID, тем самым заставляя его работать.

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