Jquery开关大小写无法正常工作

3vpjnl9f  于 2023-01-08  发布在  jQuery
关注(0)|答案(1)|浏览(135)

我有这个html:

<div class="group-processing" style="display: none;">
    <div class="title">Групповая обработка позиций (начальная версия)</div>
    <hr />
    <div class="selectors">
      <div>
        <button type="button" class="btn btn-sm btn-info check-all"><i class="fa fa-check-square"></i> выбрать все</button>
        <button type="button" class="btn btn-sm btn-info uncheck-all"><i class="fa fa-square-o"></i> снять все</button>
        Выбрано <span class="checked-num"></span> из <span class="total-num"></span>
      </div>
    </div>
    <hr />
    <div class="form-inline actions">
      <div class="action price">
        <b>Цена</b>
        <select name="price-action-mode" class="form-control">
          <optgroup label="увеличение">
            <option value="plus_percent" data-preview="увеличить цены на указанный процент" data-comment="увеличить цены на #v#%">+%</option>
            <option value="minus_reverse_percent" data-preview="отменить увеличение цен (уменьшить обратным процентом)" data-comment="отменить увеличение на #v#% (уменьшить на #v#% через обратный процент)">отм. +%</option>
          </optgroup>
          <optgroup label="уменьшение">
            <option value="minus_percent" data-preview="уменьшить цены на указанный процент" data-comment="уменьшить цены на #v#%">-%</option>
            <option value="plus_reverse_percent" data-preview="отменить уменьшение цен (увеличить обратным процентом)" data-comment="отменить уменьшение на #v#% (увеличить на #v#% через обратный процент)">отм. -%</option>
          </optgroup>
        </select>
        <input type="number" class="form-control" name="price-action-value">
        <span class="action-comment"></span>
      </div>
      <div class="action supplier">
        <b>Поставщик</b>
        <input type="text" class="form-control" name="supplier-action-value">
        <span class="action-comment"></span>
      </div>

      <div class="action price_no">
        <b>Тип цены</b>
        <select name="product-price_no" class="form-control text-right">
          <option value="" selected>Выберите тип цены...</option>
          <? for ($p = 1; $p <= catalog::PRICES_NUM; $p++) : ?>
            <option value="<?= $p ?>"><?= catalog::$PricesNames[$p] ?></option>
          <? endfor; ?>
        </select>
        <span class="action-comment"></span>
      </div>
      <div class="action deleteChecked">
        <input type="checkbox" name="deleteChecked-action-value">
        <label for="checkbox">Удалить отмеченные позиции (<span class="checked-num"></span>)</label>
        <span class="action-comment"></span>
      </div>
    </div>
    <hr />
    <div class="process">
      <button type="button" class="btn btn-sm btn-primary apply">Применить изменения</button>
    </div>
  </div>

我尝试以上jquery代码和html,但他们不能正常工作。上面你看到html代码,那么请看看jquery代码。jquery代码:

var $groupProcessingContainer = jQuery('.group-processing');
var $groupProcessingTable = jQuery('.table-order-items');
var groupProcessingClassChecked = 'fa-check-square';
var groupProcessingClassUnchecked = 'fa-square-o';
function groupProcessingApply() {
    var $checkedRows = $groupProcessingTable.find('tr').has('td.no .' + groupProcessingClassChecked);
    //console.log('Checked: ' + $checkedRows.length);
    $groupProcessingContainer.find('.actions .action').each(function () {
        var $action = jQuery(this);
        var action = $action.attr('class').split(' ').slice(-1)[0];
        //console.log(action);
        var mode = $action.find('select[name$=-action-mode] option:selected').val();
        var isChecked = $action.find('input[name$=-action-value]').is(':checked');
        var val = $action.find('input[name$=-action-value]').val();
        switch (action) {
            case 'price': //console.log(action);
                //console.log(val);
                if (!val) {
                    return true; // skip empty action
                }
                if (!/^-?\d+/.test(val)) {
                    alert('Некорректное значение для изменения цен');
                    return true;
                }
                if (mode == 'plus_percent' || mode == 'minus_percent') {
                    if (mode == 'minus_percent') {
                        val *= -1;
                    }
                    $checkedRows.each(function () {
                        var $row = jQuery(this);
                        var $price = $row.find('input[name^=product-price]');
                        $price.val(($price.val() * (1 + val / 100)).toFixed(2)).trigger('input');
                    });
                }
                if (mode == 'plus_reverse_percent' || mode == 'minus_reverse_percent') {
                    if (mode == 'minus_reverse_percent') {
                        val *= -1;
                    }
                    $checkedRows.each(function () {
                        var $row = jQuery(this);
                        var $price = $row.find('input[name^=product-price]');
                        $price.val(($price.val() / (1 - val / 100)).toFixed(2)).trigger('input');
                    });
                }
            case 'price_no':
                var value = $action.find(":selected").val();
                $checkedRows.each(function () {
                    var $row = jQuery(this);
                    var $price_no = $row.find('select[name^=product-price_no]');
                    $price_no.val(value).change();
                });
            case 'deleteChecked':
                console.log("true");

                $checkedRows.each(function () {
                    var $row = jQuery(this).find('td a[class=del-product]');
                    $row.click();
                });
        };
    });
    $checkedRows = null;
}

jquery和html代码可以工作,但不能正常工作。但是
1.我的代码工作了两次(当我删除行时,它工作了两次);
1.每种情况都不单独起作用,当我删除行时,其他情况起两种作用)));
救命啊!

vltsax25

vltsax251#

预期产出是什么?
还应注意:Switch Case Break是到switch语句末尾的分支。没有break,程序继续到下一个标记的语句,执行语句直到到达break或语句末尾。所以这可能就是为什么你的其他case也能工作的原因。

相关问题