Форум русской поддержки Joomla!® CMS
01.05.2017, 00:52:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 276 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« : 17.04.2017, 15:49:08 »

Необходимо при введении определенного числа в свободный атрибут получить определенное значение опции атрибута. Например, при вводе в поле свободного атрибута любого числа менее 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
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #1 : 17.04.2017, 17:30:32 »

Кучу нюансов необходимо учесть (тип атрибутов, диапазон в котором менять, что бы цена менялась при изменении атрибута, и т.д. и т.п.). Вот навскидку для радиоатрибутов
Показать текстовый блок

Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #2 : 17.04.2017, 18:51:59 »

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

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #3 : 17.04.2017, 19:45:16 »

Итак, имеем независимый атрибут 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
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #4 : 18.04.2017, 00:18:29 »

Это не верно "#jshop_attr_id51"+fa_val и это "#jshop_attr_id52"+fa_val
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #5 : 18.04.2017, 10:08:08 »

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

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #6 : 18.04.2017, 12:58:18 »

Но как показать зависимость свободного атрибута от id опций независимого атрибута?
Я, честно говоря, думал что зависимость должна быть обратной. Т.е. ввели в текстовое поле свободного атрибута например число 5 и соответственно выбран стал атрибут с опцией с id равным 5
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #7 : 18.04.2017, 13:04:34 »

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

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #8 : 18.04.2017, 14:51:41 »

Я привёл пример для радиобатонов. У вас видимо select...
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #9 : 18.04.2017, 16:46:06 »

Нет, радиобатоны. Каким образом выводиться именно значение с value_id=1, а не с value_id=2? Вот этого не могу понять из кода?


* 1.jpg (104.97 Кб, 1172x294 - просмотрено 7 раз.)
« Последнее редактирование: 18.04.2017, 17:16:22 от pvi1 » Записан
Brooksus
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #10 : 18.04.2017, 22:04:48 »

http://pastenow.ru/848bb38ec8144cafa42cd219afe436b9
Показать текстовый блок
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #11 : 19.04.2017, 10:34:51 »

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


* 2.jpg (794.79 Кб, 1920x1080 - просмотрено 1 раз.)
Записан
Brooksus
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #12 : 19.04.2017, 13:05:50 »

Эти значения задаются автоматически при создании атрибута. Зачем они вам? Azn
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #13 : 19.04.2017, 13:29:34 »

Может быть я не четко объясняю, но хотелось бы до конца понять. Например, я создал опцию RED c value_id = 5  и опцию BLUE с value_id=6. Допустим при вводе числа 5 у меня должна чекаться опция RED. Допустим этот код позволяет так сделать. А если я хочу, чтобы чекалась опция BLUE при вводе числа 5, код такой же, или будут какие-то изменения? Вот именно это мне непонятно.


* 3.jpg (92.11 Кб, 1553x314 - просмотрено 5 раз.)
« Последнее редактирование: 19.04.2017, 13:41:00 от pvi1 » Записан
Brooksus
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #14 : 19.04.2017, 16:54:36 »

Это я ввёл вас в заблуждение, простите...
Вот эта конструкция в принципе верна #jshop_attr_id51+fa_val, если 51 - это id атрибута
Соответственно у этого атрибута с опцией с id=6 например, будет id jshop_attr_id516
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #15 : 19.04.2017, 17:22:50 »

Пока никаких признаков жизни...
Вот эта конструкция вызывает вопросы
Код:
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, 17:34:27 от pvi1 » Записан
Brooksus
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #16 : 19.04.2017, 17:39:33 »

Василий, ну, вы же уже тёртый калач.
Почему вы меня спрашиваете "Может" ... Попробуйте Azn
Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #17 : 19.04.2017, 17:45:46 »

Да какой тертый калач? Smiley В 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, 17:49:22 от pvi1 » Записан
Brooksus
Завсегдатай
*****

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #18 : 19.04.2017, 23:38:01 »

http://imgur.com/a/XdNew (откройте в полноэкранном режиме)
http://pastenow.ru/52e4126372bae4ce01bfc1e52846a4bf
Показать текстовый блок
« Последнее редактирование: 20.04.2017, 19:50:50 от Brooksus » Записан
pvi1
Завсегдатай
*****

Репутация: +13/-0
Offline Offline

Сообщений: 536


« Ответ #19 : 20.04.2017, 22:06:05 »

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

Репутация: +155/-0
Offline Offline

Пол: Мужской
Сообщений: 621


Ща спою...


« Ответ #20 : 21.04.2017, 11:03:03 »

Я лишь привёл несколько примеров.  Дальше вы уже сами. Желаю творческих успехов Azn
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet