function recalculatePrice() { var total = 0; total += inputs_1.getPrice(); total += inputs_2.getPrice(); total_el.text(total); btn_submit.attr('disabled', total <= 0); }
function getCheckboxes(table, is_verion_1) { var o = { items: [], getElem: function (el) { var i = 0, len = this.items.length; for (; i < len; i += 1) { if (this.items[i].inp[0] == el) { return this.items[i]; } } return null; }, clear: function () { var i = 0, len = this.items.length; for (; i < len; i += 1) { this.items[i].inp.attr('checked', false).attr('disabled', false); } }, fullElemClicked: function (clicked_el, checked) { var i = 0, len = this.items.length, el; for (; i < len; i += 1) { el = this.items[i]; if (el.inp[0] != clicked_el[0]) { if (el.is_base_scrining) { el.inp.attr('checked', false).attr('disabled', checked || false); } else { el.inp.attr('checked', checked || false).attr('disabled', checked || false); } } } }, baseElemClicked: function (clicked_el, checked) { var i = 0, len = this.items.length, el; for (; i < len; i += 1) { el = this.items[i]; if (el.inp[0] != clicked_el[0]) { if (el.is_base_scrining || el.is_base_clinik) { el.inp.attr('checked', false).attr('disabled', checked || false); } else { //el.inp.attr('checked', false); } } } }, getPrice: function () { var i = 0, len = this.items.length, price = 0, el; for (; i < len; i += 1) { el = this.items[i]; if (el.inp.attr('checked')) { if (el.is_full) { return el.price(); } price += el.price(); } } return price; }, changeStateByText: function (from_el) { var input = from_el.parents('tr').eq(0).find('td').eq(is_verion_1 ? 1 : 0).find('input[type=checkbox]'); if (!input.attr('checked')) { input.attr('disabled', from_el.attr('checked') || false); } }, changeStateAll: function (disabled) { var i = 0, len = this.items.length, el; for (; i < len; i += 1) { el = this.items[i]; el.inp.attr('disabled', disabled || false).attr('checked', false); } }, changeStateBase: function (disabled) { var i = 0, len = this.items.length, el; for (; i < len; i += 1) { el = this.items[i]; if (el.is_base_scrining || el.is_base_clinik) { el.inp.attr('disabled', disabled || false).attr('checked', false); } } } }; table.find('tr').each(function () { var $tr = $(this); $tr.find('td').eq(is_verion_1 ? 0 : 1).find('input[type=checkbox]').each(function () { var $this = $(this), base_scrining = $this.hasClass('base_scrining'), is_full = $this.hasClass('full'), base_clinik = $this.hasClass('base_clinik'); o.items.push({ is_full: is_full, is_base_scrining: base_scrining, is_base_clinik: base_clinik, inp: $this, price: function () { return parseInt($this.parent().find('span').text(), 10) || 0; } }); }); }); return o; }
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
apexis
Ковырялся в скрипте и подпортил его - не высчитывает сумму верхнего левого чекбокса на странице страница
(function () {
var inputs_1, inputs_2, total_el, current_version, table, btn_submit, form;
$(document).ready(function () {
table = $('.parkesd');
total_el = $('#total');
inputs_1 = getCheckboxes(table, true);
inputs_2 = getCheckboxes(table, false);
btn_submit = $('#btn-submit').click(function() {
$('#zakaz-link').trigger('click');
});
$('#zakaz-link').colorbox({ iframe: true, width:"80%", height:"100%", onComplete: frameReady });
$('#prods').change(recalculatePrice);
table.find('input[type=checkbox]').click(function () {
var $this = $(this), is_version_1 = table.find('tr td').index($this.parent()) % 2 == 0, elem,
checked = $this.attr('checked') || false;
current_version = is_version_1 ? 1 : 2
if (is_version_1) {
elem = inputs_1.getElem(this);
if (elem.is_full) {
inputs_1.fullElemClicked(elem.inp, checked);
inputs_2.changeStateAll(checked);
}
else if (elem.is_base_scrining || elem.is_base_clinik) {
inputs_1.baseElemClicked(elem.inp, checked);
inputs_2.changeStateBase(checked);
inputs_3.changeStateBase(checked);
}
else {
inputs_1.changeStateByText(elem.inp);
}
}
else {
elem = inputs_2.getElem(this);
if (elem.is_full) {
inputs_2.fullElemClicked(elem.inp, checked);
inputs_1.changeStateAll(checked);
}
else if (elem.is_base_scrining || elem.is_base_clinik) {
inputs_2.baseElemClicked(elem.inp, checked);
inputs_1.changeStateBase(checked);
}
else {
inputs_2.changeStateByText(elem.inp);
}
}
recalculatePrice();
});
});
function frameReady() {
var frame = $('#colorbox').find('iframe');
if(!frame.length) {
setTimeout(frameReady, 300);
return;
}
var iframewindow = frame[0].contentWindow? frame[0].contentWindow : frame[0].contentDocument.defaultView;
var form = $(iframewindow.document).find('form');
form.find('input[type=text]:last').after(getFormText());
}
function getFormText() {
var str = '';
str += '<div>Цена</div> <input readonly name="price" value="' + total_el.text() + '" class="formfields" style="width: 100px;"/>';
str += '<div>Опции</div>';
table.find('tr').each(function() {
var $this = $(this), $td = $this.find('td'), $inputs = $td.find('input[type=checkbox]'), opt;
if(!$inputs.length) {
return true;
}
var version = $inputs.eq(0).attr('checked') ? 1 : $inputs.eq(1).attr('checked') ? 2 : 0;
if(!version) {
return true;
}
opt = $this.find('th').text() + ' (Версия ' + version + ')';
str += '<div style="width:100%; text-align:right;">' + opt + '</div>';
str += '<input type="hidden" name="options[]" value="' + opt + '" />';
});
return str;
}
function recalculatePrice() {
var total = 0;
total += inputs_1.getPrice();
total += inputs_2.getPrice();
total_el.text(total);
btn_submit.attr('disabled', total <= 0);
}
function getCheckboxes(table, is_verion_1) {
var o = {
items: [],
getElem: function (el) {
var i = 0, len = this.items.length;
for (; i < len; i += 1) {
if (this.items[i].inp[0] == el) {
return this.items[i];
}
}
return null;
},
clear: function () {
var i = 0, len = this.items.length;
for (; i < len; i += 1) {
this.items[i].inp.attr('checked', false).attr('disabled', false);
}
},
fullElemClicked: function (clicked_el, checked) {
var i = 0, len = this.items.length, el;
for (; i < len; i += 1) {
el = this.items[i];
if (el.inp[0] != clicked_el[0]) {
if (el.is_base_scrining) {
el.inp.attr('checked', false).attr('disabled', checked || false);
}
else {
el.inp.attr('checked', checked || false).attr('disabled', checked || false);
}
}
}
},
baseElemClicked: function (clicked_el, checked) {
var i = 0, len = this.items.length, el;
for (; i < len; i += 1) {
el = this.items[i];
if (el.inp[0] != clicked_el[0]) {
if (el.is_base_scrining || el.is_base_clinik) {
el.inp.attr('checked', false).attr('disabled', checked || false);
}
else {
//el.inp.attr('checked', false);
}
}
}
},
getPrice: function () {
var i = 0, len = this.items.length, price = 0, el;
for (; i < len; i += 1) {
el = this.items[i];
if (el.inp.attr('checked')) {
if (el.is_full) {
return el.price();
}
price += el.price();
}
}
return price;
},
changeStateByText: function (from_el) {
var input = from_el.parents('tr').eq(0).find('td').eq(is_verion_1 ? 1 : 0).find('input[type=checkbox]');
if (!input.attr('checked')) {
input.attr('disabled', from_el.attr('checked') || false);
}
},
changeStateAll: function (disabled) {
var i = 0, len = this.items.length, el;
for (; i < len; i += 1) {
el = this.items[i];
el.inp.attr('disabled', disabled || false).attr('checked', false);
}
},
changeStateBase: function (disabled) {
var i = 0, len = this.items.length, el;
for (; i < len; i += 1) {
el = this.items[i];
if (el.is_base_scrining || el.is_base_clinik) {
el.inp.attr('disabled', disabled || false).attr('checked', false);
}
}
}
};
table.find('tr').each(function () {
var $tr = $(this);
$tr.find('td').eq(is_verion_1 ? 0 : 1).find('input[type=checkbox]').each(function () {
var $this = $(this), base_scrining = $this.hasClass('base_scrining'),
is_full = $this.hasClass('full'),
base_clinik = $this.hasClass('base_clinik');
o.items.push({
is_full: is_full,
is_base_scrining: base_scrining,
is_base_clinik: base_clinik,
inp: $this,
price: function () {
return parseInt($this.parent().find('span').text(), 10) || 0;
}
});
});
});
return o;
}
})();
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.