Связать свободный атрибут с другим атрибутом

  • 20 Ответов
  • 442 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Необходимо при введении определенного числа в свободный атрибут получить определенное значение опции атрибута. Например, при вводе в поле свободного атрибута любого числа менее 15, необходимо получить в атрибуте A значение опции атрибута с ID=5. Составил такой скрипт, подключил в карточке, но ничего не выходит.

Код
$(document).ready(function() {
$('#attribut').change(freeattribut);
});
$(document).ready(freeattribut);
function freeattribut() {
var freeattribut= $('#freeattribut').val();
if(freeattribut < 15) {$attribut= 'jshop_attr_id5'}
else if   ......

Вообще реально сделать это, или это невозможно в JS?

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Кучу нюансов необходимо учесть (тип атрибутов, диапазон в котором менять, что бы цена менялась при изменении атрибута, и т.д. и т.п.). Вот навскидку для радиоатрибутов
Спойлер
[свернуть]

Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Спасибо за наводку.
« Последнее редактирование: 17.04.2017, 20:46:20 от pvi1 »

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Итак, имеем независимый атрибут A c ID=5 с двумя опциями, имеющими ID=1 и ID=2.
Получается код
Код
jQuery(function(){
jQuery("input[name*='freeattribut']").keyup(function(){
var attrval, fa_val=jQuery(this).val();
if (parseInt(fa_val)<15){
attrval=jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id51"+fa_val)).val();
jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id51"+fa_val)).attr("checked","checked");
if (attrval){
setAttrValue('5', attrval);
}
} else if (parseInt(fa_val)>=15){
attrval=jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id52"+fa_val)).val();
jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id52"+fa_val)).attr("checked","checked");
if (attrval){
setAttrValue('5', attrval);
}
});
});


Но все равно что-то не так

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Это не верно "#jshop_attr_id51"+fa_val и это "#jshop_attr_id52"+fa_val
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Это не верно "#jshop_attr_id51"+fa_val и это "#jshop_attr_id52"+fa_val
Но как показать зависимость свободного атрибута от id опций независимого атрибута?

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Но как показать зависимость свободного атрибута от id опций независимого атрибута?
Я, честно говоря, думал что зависимость должна быть обратной. Т.е. ввели в текстовое поле свободного атрибута например число 5 и соответственно выбран стал атрибут с опцией с id равным 5
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Я, честно говоря, думал что зависимость должна быть обратной. Т.е. ввели в текстовое поле свободного атрибута например число 5 и соответственно выбран стал атрибут с опцией с id равным 5
Все правильно Вы сказали - это я некорректно написал. Надо показать зависимость id опций независимого атрибута от ввода значения свободного атрибута. Единственное уточнение: Выбран атрибут с attr_id =5, а опция атрибута value_id=1

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Я привёл пример для радиобатонов. У вас видимо select...
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Нет, радиобатоны. Каким образом выводиться именно значение с value_id=1, а не с value_id=2? Вот этого не могу понять из кода?
« Последнее редактирование: 18.04.2017, 18:16:22 от pvi1 »

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
В принципе, логика понятна. Но, если например задан диапазон, т.е. при вводе чисел от 1 до 15 должна чекаться одна и та же опция, а с 15 до 30 другая и т.д? И как в коде прописано, что имеено эта опция должна cheked, а не другая. Во вложении я нарисовал пример.

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Эти значения задаются автоматически при создании атрибута. Зачем они вам? :)
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Может быть я не четко объясняю, но хотелось бы до конца понять. Например, я создал опцию RED c value_id = 5  и опцию BLUE с value_id=6. Допустим при вводе числа 5 у меня должна чекаться опция RED. Допустим этот код позволяет так сделать. А если я хочу, чтобы чекалась опция BLUE при вводе числа 5, код такой же, или будут какие-то изменения? Вот именно это мне непонятно.
« Последнее редактирование: 19.04.2017, 14:41:00 от pvi1 »

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Это я ввёл вас в заблуждение, простите...
Вот эта конструкция в принципе верна #jshop_attr_id51+fa_val, если 51 - это id атрибута
Соответственно у этого атрибута с опцией с id=6 например, будет id jshop_attr_id516
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Пока никаких признаков жизни...
Вот эта конструкция вызывает вопросы
Код
attrval - value атрибута с id = jshop_attr_id+значение fa_val , если fa_val=12 следовательно id=jshop_attr_id12
А зачем в id атрибута добавлять число, введенное в свободном атрибуте? Может надо прописать так
 
Код
attrval=jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id5"+'6')).val();
jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id5"+'6')).attr("checked","checked");
, где 5 - id атрибута, а 6 -id опции атрибута?
 И может быть все-таки привязать как-то id свободного атрибута (ведь их может быть несколько) и в первой строчке написать типа
Код
jQuery("input[name*='freeattribut[3]']").keyup(function()
?
И второе. И все-таки как привязать id опции в коде? Может надо присвоить опциям какую-то переменную?
« Последнее редактирование: 19.04.2017, 18:34:27 от pvi1 »

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Василий, ну, вы же уже тёртый калач.
Почему вы меня спрашиваете "Может" ... Попробуйте :)
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Да какой тертый калач? ^-^ В javascript очень слаб. Попробовал методом тыка разные варианты - в фаербаге никаких изменений. Скрипт подключил в начале страницы. Последний вариант
Код
<script type="text/javascript">
jQuery(function(){
jQuery("input[name*='freeattribut[3]']").keyup(function(){
var attrval, fa_val=jQuery(this).val();
if (parseInt(fa_val)<15){
attrval=jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id8"+'31')).val();
jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id8"+'31')).attr("checked","checked");
if (attrval){
setAttrValue('8', attrval);
}
} else if (parseInt(fa_val)>=15){
attrval=jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id8"+'32')).val();
jQuery(".jshop_prod_attributes").find(jQuery("#jshop_attr_id8"+'32')).attr("checked","checked");
if (attrval){
setAttrValue('8', attrval);
}
});
});
</script>
не работает
« Последнее редактирование: 19.04.2017, 18:49:22 от pvi1 »

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
(откройте в полноэкранном режиме)
http://pastenow.ru/52e4126372bae4ce01bfc1e52846a4bf
Спойлер
[свернуть]
« Последнее редактирование: 20.04.2017, 20:50:50 от Brooksus »
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.

*

pvi1

  • Завсегдатай
  • *****
  • 527
  • 11
Дмитрий! Спасибо, что Вы так много внимания уделяете моей проблеме. При беглом анализе (приехал только с командировки) я пришел к следующему выводу:
 - если в условии задан диапазон, например, >=10, то чтобы при вводе любого числа, соответствующему этому условию  надо вводить конкретно id атрибута и id опции, которое соответствует этому условию (в Вашем примере 1 и 10 соответственно). Другие условия мне тоже понятны.
Если в условии есть равенство или строгое равенство, как в Вашем примере ===2, то здесь получается, что ID опции должно быть равно вводимому  числу, т.е 2. Что не совсем удобно при составлении всех условий.
А не проще  во всех условиях прописывать конкретно #jshop_attr_id110 или там #jshop_attr_id12. Например, можно так?
Спойлер
[свернуть]
Если это тоже верно, то вроде Эйнштейн сказал: "Всё простое – гениально".
Спасибо большое.
« Последнее редактирование: 20.04.2017, 23:10:22 от pvi1 »

*

Brooksus

  • Завсегдатай
  • *****
  • 616
  • 156
  • Ща спою...
Я лишь привёл несколько примеров.  Дальше вы уже сами. Желаю творческих успехов :)
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.