Здравствуйте!
Сильно не пинайте,если то не так,я тут новичок.
Помогите решить проблему:
есть связанные опции,допустим,цвет и размер,вот когда страница загрузилась,стоит checked на первое значение у цвета и размера,а если кликнуть по цвету,то checked слетает у размера,хотелось бы,чтобы у размера выбиралось первое доступное значение,в картинках думаю будет понятно:
это когда страница загрузилась только:
это,если кликнуть по верхним опциям:
помогите,пожалуйста,сделат ь,чтобы у нижних опций ставился checked у первой доступной опции
скрипт большой,выложил кусок,который,по-моему нужн оправить,если не так,тогда выложу весь скрипт,дайте знать,если непройдете мимо решите помочь
function get_options_values(options_keys) {
var options_values = {};
for (var i=0;i<$("select[name^=option]").length;i++) {
option_id = parseInt( $("select[name^=option]")[i].name.substr(7,$("select[name^=option]")[i].name.length-8) );
if ($.inArray(option_id,variant_product_options) != -1) {
options_values[option_id] = $("select[name^=option]")[i].value;
options_keys.push(option_id);
}
}
// сначала все радио
for (var i=0;i<$("input[type=radio][name^=option]").length;i++) {
option_id = parseInt( $("input[type=radio][name^=option]")[i].name.substr(7,$("input[type=radio][name^=option]")[i].name.length-8) );
if ($.inArray(option_id,variant_product_options) != -1) {
$('.option label').removeClass('checked');
options_values[option_id] = 0;
if ($.inArray(option_id,options_keys) == -1) {
options_keys.push(option_id);
}
}
}
// затем только выбранные
for (var i=0;i<$("input[type=radio][name^=option]:checked").length;i++) {
option_id = parseInt( $("input[type=radio][name^=option]:checked")[i].name.substr(7,$("input[type=radio][name^=option]:checked")[i].name.length-8) );
if ($.inArray(option_id,variant_product_options) != -1) {
options_values[option_id] = $("input[type=radio][name^=option]:checked")[i].value;
$("label[for=option-value-"+options_values[option_id]+"]").attr('class','checked');
}
}
return options_values;
}
// автовыбор корректных начальных значений опций, если уже выбраны какие-то значения
function use_first_values(set_anyway) {
var options_values = get_options_values([]);
var has_selected = false;
for (var optkey in options_values) {
if (options_values[optkey]) {
has_selected = true;
break;
}
}
if ((has_selected || set_anyway) && ro_array && Object.keys(ro_array).length > 0) {
ro_key = Object.keys(ro_array)[0];
setSelectedRO(ro_key);
}
}
function setSelectedRO(ro_key) {
if (ro_array && ro_array[ro_key]) {
var last_opt_id = "";
for (var opt_id in ro_array[ro_key]) {
if ($('select[name=option\\['+opt_id+'\\]]').length > 0) {
$('[name=option\\['+opt_id+'\\]]').val(ro_array[ro_key][opt_id]);
} else if ($('input[type=radio][name=option\\['+opt_id+'\\]]').length > 0) {
$('input[type=radio][name=option\\['+opt_id+'\\]][value='+ro_array[ro_key][opt_id]+']').prop('checked', true);
}
last_opt_id = opt_id;
}
if (last_opt_id != "") {
if ($('select[name=option\\['+last_opt_id+'\\]]').length > 0) {
$('[name=option\\['+last_opt_id+'\\]]').change();
} else if ($('input[type=radio][name=option\\['+last_opt_id+'\\]]').length > 0) {
$('input[type=radio][name=option\\['+last_opt_id+'\\]][value='+ro_array[ro_key][last_opt_id]+']').change();
}
}
}
set_block_options();
set_journal2_options();
}
// для пошагового варианта
function get_options_steps() {
var options_steps = [];
var product_option_id = "";
for (var i=0;i<$('[name^=option\\[]').length;i++) {
product_option_id = $('[name^=option\\[]')[i].name.substr(7, $('[name^=option\\[]')[i].name.length-8);
if (!isNaN(product_option_id)) product_option_id = parseInt(product_option_id);
if ($.inArray(product_option_id, variant_product_options) != -1) {
if ($.inArray(product_option_id, options_steps) == -1) {
options_steps.push(product_option_id);
}
}
}
return options_steps;
}
function options_values_access() {
if (!ro_array) return;
if (ro_step_by_step) {
var options_steps = get_options_steps();
var prev_options_values = {};
var prev_options = [];
for (var i=0;i<options_steps.length;i++) {
if (i>0) {
if (prev_options[i-1]) {
// ограничения по предыдущим
option_values_access(prev_options_values, options_steps[i]);
} else {
// откл все
set_accessible_values(options_steps[i], []);
}
}
prev_options.push( ($('input[type=radio][name=option\\['+options_steps[i]+'\\]]:checked').val() || $('select[name=option\\['+options_steps[i]+'\\]]').val()) );
prev_options_values[options_steps[i]] = prev_options[prev_options.length-1];
}
} else {
var options_keys = [];
var options_values = get_options_values(options_keys);
for (var i=0;i<options_keys.length;i++) {
option_values_access(options_values, options_keys[i]);
}
}
stock_control(0);
<?php
if (isset($ro_settings['spec_model']) && $ro_settings['spec_model']) {
?>
set_model();
<?php
}
?>
check_block_options();
}