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

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Необходимо при введении определенного числа в свободный атрибут получить определенное значение опции атрибута. Например, при вводе в поле свободного атрибута любого числа менее 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

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Кучу нюансов необходимо учесть (тип атрибутов, диапазон в котором менять, что бы цена менялась при изменении атрибута, и т.д. и т.п.). Вот навскидку для радиоатрибутов
Спойлер
[свернуть]

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

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Спасибо за наводку.
« Последнее редактирование: 17.04.2017, 18:46:20 от pvi1 »
*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Итак, имеем независимый атрибут 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

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Это не верно "#jshop_attr_id51"+fa_val и это "#jshop_attr_id52"+fa_val
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Это не верно "#jshop_attr_id51"+fa_val и это "#jshop_attr_id52"+fa_val
Но как показать зависимость свободного атрибута от id опций независимого атрибута?
*

Brooksus

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

pvi1

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

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Я привёл пример для радиобатонов. У вас видимо select...
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

pvi1

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

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
В принципе, логика понятна. Но, если например задан диапазон, т.е. при вводе чисел от 1 до 15 должна чекаться одна и та же опция, а с 15 до 30 другая и т.д? И как в коде прописано, что имеено эта опция должна cheked, а не другая. Во вложении я нарисовал пример.
*

Brooksus

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

pvi1

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

Brooksus

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

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Пока никаких признаков жизни...
Вот эта конструкция вызывает вопросы
Код
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, 16:34:27 от pvi1 »
*

Brooksus

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

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Да какой тертый калач? ^-^ В 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, 16:49:22 от pvi1 »
*

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
http://imgur.com/a/XdNew (откройте в полноэкранном режиме)
http://pastenow.ru/52e4126372bae4ce01bfc1e52846a4bf
Спойлер
[свернуть]
« Последнее редактирование: 20.04.2017, 18:50:50 от Brooksus »
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

pvi1

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

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Я лишь привёл несколько примеров.  Дальше вы уже сами. Желаю творческих успехов :)
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как передать значение атрибута в свободный атрибут?

Автор votuksol

Ответов: 3
Просмотров: 1359
Последний ответ 26.02.2021, 08:50:38
от kit2m2
Свободный атрибут в корзине

Автор anny_k

Ответов: 7
Просмотров: 1092
Последний ответ 22.02.2020, 10:17:01
от anny_k
Можно ли удалить выбранный атрибут в корзине?

Автор Ariadna

Ответов: 6
Просмотров: 594
Последний ответ 06.02.2020, 00:37:04
от Ariadna
Как запретить покупку товара если атрибут не соответствует?

Автор mario052

Ответов: 7
Просмотров: 841
Последний ответ 15.03.2018, 16:36:43
от mario052
Вывод цен рядом с атрибутом таблицей

Автор PSN

Ответов: 5
Просмотров: 996
Последний ответ 06.09.2017, 02:50:05
от Kugata