我有这个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.每种情况都不单独起作用,当我删除行时,其他情况起两种作用)));
救命啊!
1条答案
按热度按时间vltsax251#
预期产出是什么?
还应注意:Switch Case Break是到switch语句末尾的分支。没有break,程序继续到下一个标记的语句,执行语句直到到达break或语句末尾。所以这可能就是为什么你的其他case也能工作的原因。