Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: смена текста при нажатии на кнопку

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
katjuha6
Отправлено: 03 Февраля, 2013 - 00:56:27
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




всем доброго времени суток, уважаемые форумчане!
есть такой код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //$param['product_type_id'] = $product_type_id;
  3. //$_SESSION['vmCompareBtnParam'] = $param;
  4. ?>
  5. <div  class="check">
  6. <?PHP if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
  7. //$show_checkboxes = @$_SESSION['vmCompareParam']['show_checkboxes'];
  8. //$product_type_id = $param['product_type_id'];
  9. $session =& JFactory::getSession();
  10. $compare = $session->get('compare');
  11. if(isset($compare[$product_type_id])&& is_array($compare[$product_type_id]) && in_array($product_id, $compare[$product_type_id]) )
  12.  {   $checkValue = 'checked="checked"';}
  13. else {  $checkValue = '';}
  14. ?>
  15. <input name="compare_<?PHP echo $product_id ?>" id="compare_cart_<?PHP echo $product_id ?>" alt="Сравнить" title="Сравнить" type="checkbox" <?PHP echo $checkValue ?> onclick="return CompareProduct( this,<?PHP echo $product_type_id ?>);" class="compare_checkbox">
  16. <?PHP echo "сравнить"?>
  17.  </div>


конструкция данного кода такая: чекбокс и рядом с ним текст "сравнить".
как сделать так, чтобы когда кликали по чекбоксу текст рядом с ним изменялся на "перейти к сравнению"?
Буду очень признательна за помощь =)
 
 Top
zypikov
Отправлено: 03 Февраля, 2013 - 01:42:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Без текста функции CompareProduct сложно сказать. Но в общем случае нужно модернизировать эту функцию, а точнее нужно найти тег (где содержиться текст который вы хотите заменить, по getElementById, например). Получите тег поменяете его свойство value или innerHTML на тот текст который вы хотите видеть. Сделать это весьма несложно))


-----
У всего есть обратная сторона.
 
 Top
katjuha6
Отправлено: 03 Февраля, 2013 - 01:48:35
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




я понимаю, что несложно. =) но проблема в том что я не ориентируюсь в php и java.
скажите, пожалуйста, можно ли как-то внести изменения в этот код? или надо пересматривать файлы, относящиеся к компоненту?
 
 Top
zypikov
Отправлено: 03 Февраля, 2013 - 02:11:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Вы знаете как посмотреть код сгенерированной html-странички? Короче мне нужен текст функции CompareProduct. Сможете выложить? Наверное лучше упаковать ваш заменяемый текст в какой-нубидь <span> присвоить ему id, потом по нему его найти и заменить текст.


-----
У всего есть обратная сторона.
 
 Top
katjuha6
Отправлено: 03 Февраля, 2013 - 02:29:53
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




текст функции CompareProduct (надеюсь, что это он) =)
CODE (javascript):
скопировать код в буфер обмена
  1. function CompareProduct(el, type_id) {
  2.         var Product_ID = el.name;
  3.         Product_ID = Product_ID.replace("compare_","");
  4.         //alert("ДО: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
  5.         if (el.checked && CompareTypeID != -1 && type_id!=CompareTypeID) {
  6.                 alert("Hельзя сравнивать товары разного типа");
  7.                 return false;
  8.         }
  9.         else if (el.checked && ProductsInCart.length>=MaxProductToCompare) {
  10.                 alert("Нельзя сравнивать более " + MaxProductToCompare + " продуктов одновременно");
  11.                 return false;
  12.         }
  13.         else if (el.checked) {
  14.                 CompareTypeID = type_id;
  15.                 AddCompare(Product_ID);
  16.         }
  17.         else RemoveCompare(Product_ID);
  18.         //alert("ПОСЛЕ: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
  19.         return true;
  20.  
  21. }

и на всякий случай код самого чекбокса
CODE (javascript):
скопировать код в буфер обмена
  1. function AddCompare(product) {
  2.         ProductsInCart.push(product);
  3.         var frm= $("frmProductCompare");
  4.         frm.product_id.value=product;
  5.         frm.func.value="comparisonAdd";
  6.         //frm.page.value = "shop.comparison_short";
  7.         handleUpdateCompare(frm);
  8. }

HTML код чекбокса и текста
CODE (html):
скопировать код в буфер обмена
  1. <div  class="check">
  2. <input name="compare_65" id="compare_cart_65" alt="Сравнить" title="Сравнить" type="checkbox"  onclick="return CompareProduct( this,3);" class="compare_checkbox">
  3. Сравнить
  4.  </div>

посмотреть на это можно тут http://test[dot]katalliana[dot]org/ru/in[dot][dot][dot]lya-piknika[dot]html
 
 Top
zypikov
Отправлено: 03 Февраля, 2013 - 02:49:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Да да то что надо)

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. function CompareProduct(el, type_id) {
  4.  
  5.         var Product_ID = el.name;
  6.  
  7.         Product_ID = Product_ID.replace("compare_","");
  8.  
  9.         var chText = el.parentNode;
  10.         for(var i = 0; chText.childNodes.length - 1; i++){
  11.             if (chText.childNodes[i].nodeType == 1 && chText.childNodes[i].tagName == 'SPAN'){
  12.                       var obj = chText.childNodes[i];
  13.                             obj.innerHTML = 'перейти к сравнению';
  14.                             break;
  15.                }
  16.         }
  17.                
  18.         //alert("ДО: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
  19.  
  20.         if (el.checked && CompareTypeID != -1 && type_id!=CompareTypeID) {
  21.  
  22.                 alert("Hельзя сравнивать товары разного типа");
  23.  
  24.                 return false;
  25.  
  26.         }
  27.  
  28.         else if (el.checked && ProductsInCart.length>=MaxProductToCompare) {
  29.  
  30.                 alert("Нельзя сравнивать более " + MaxProductToCompare + " продуктов одновременно");
  31.  
  32.                 return false;
  33.  
  34.         }
  35.  
  36.         else if (el.checked) {
  37.  
  38.                 CompareTypeID = type_id;
  39.  
  40.                 AddCompare(Product_ID);
  41.  
  42.         }
  43.  
  44.         else RemoveCompare(Product_ID);
  45.  
  46.         //alert("ПОСЛЕ: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
  47.  
  48.         return true;
  49.  
  50.  
  51.  
  52. }
  53.  


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. //$param['product_type_id'] = $product_type_id;
  5.  
  6. //$_SESSION['vmCompareBtnParam'] = $param;
  7.  
  8. ?>
  9.  
  10. <div  class="check">
  11.  
  12. <?PHP if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
  13.  
  14. //$show_checkboxes = @$_SESSION['vmCompareParam']['show_checkboxes'];
  15.  
  16. //$product_type_id = $param['product_type_id'];
  17.  
  18. $session =& JFactory::getSession();
  19.  
  20. $compare = $session->get('compare');
  21.  
  22. if(isset($compare[$product_type_id])&& is_array($compare[$product_type_id]) && in_array($product_id, $compare[$product_type_id]) )
  23.  
  24.  {   $checkValue = 'checked="checked"';}
  25.  
  26. else {  $checkValue = '';}
  27.  
  28. ?>
  29.  
  30. <input name="compare_<?PHP echo $product_id ?>" id="compare_cart_<?PHP echo $product_id ?>" alt="Сравнить" title="Сравнить" type="checkbox" <?PHP echo $checkValue ?> onclick="return CompareProduct( this,<?PHP echo $product_type_id ?>);" class="compare_checkbox">
  31.  
  32. <?PHP echo "<span>сравнить</span>"?>
  33.  
  34.  </div>
  35.  


Может потребовать правда для span вырванивание задать(. Попробуйте

(Отредактировано автором: 03 Февраля, 2013 - 03:44:38)



-----
У всего есть обратная сторона.
 
 Top
katjuha6
Отправлено: 03 Февраля, 2013 - 07:39:32
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




спасибо! работает!!!!!! =))))
причем работает даже быстрее, чем с родным кодом! это вдвойне приятно!!! и выравнивать ничего не надо! =))))
ой, что-то у меня эмоции прорезались. прошу прощения. =)
еще вопрос: когда переходишь по ссылке или обновляешь страницу - чекбокс "перейти к сравнению" снова изменяется на "сравнить". можно ли как-то "закрепить" это "перейти к сравнению" при переходе по ссылкам?
 
 Top
zypikov
Отправлено: 03 Февраля, 2013 - 21:53:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




katjuha6 пишет:
причем работает даже быстрее, чем с родным кодом! это вдвойне приятно!!! и выравнивать ничего не надо! =))))
. Это настораживает. Проверьте в отладчике ошибок не возникает ли. Я сначала не сообразил, но думаю мой код тоже надо доработать. Дело в том, что ваш чекБокс отметится в случае, если функция вернет true иначе стандартная конструкция return false подавить действия браузера по умолчанию. Чекбокс не отметиться, но все равно текст изменится.

katjuha6 пишет:
еще вопрос: когда переходишь по ссылке или обновляешь страницу - чекбокс "перейти к сравнению" снова изменяется на "сравнить". можно ли как-то "закрепить" это "перейти к сравнению" при переходе по ссылкам?


Естественно он изменится. А точнее будет тот, что генериться пых-скриптом
Можно, конечно, правда думаю это будет сделать по труднее. Так че у нас там сохраняет.. данные при переходе от страничке к страничке..

Это конечно сессии, но врят ли нужно их здесь использовать. Значит либо нужно передавать в post/get запросе еще два параметра один из которых это идентификатор контейнера в котором содержиться ваш span и состояние чекБокса для это контейнера.
Сайт ваш не смотрел, но мне нужно знать как генериться у вас ссылка на следущую страницу.
Либо использовать Куки)
Сейчас не дам код. От недосыпания шифер у крышы едит(

(Отредактировано автором: 03 Февраля, 2013 - 21:54:44)



-----
У всего есть обратная сторона.
 
 Top
katjuha6
Отправлено: 03 Февраля, 2013 - 22:04:23
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




ошибок нету - первое что я проверила после правки кода - это работоспособность модуля. там все прекрасно... =)
а шифер надо иногда все таки крепить к крыше. в общем спать побольше... (сказала я, сама забыв что такое поспать нормально) =)))
дело в том, что все, что Вы мне сейчас написали - для меня этой яй-яй-яй как сложно. вообще темный лес... почти даже дремучий.
тогда можно поставить вопрос по-другому - дело в том, что изначально я хотела сделать на этот чекбокс вслывающее окно. но проблема в том, что у меня до чертовой матери грузится скриптов на странице и там вылезает конфликт библиотек. а устранить этот конфликт я не могу - опять же знаний не хватает... скажите, что проще сделать в данной ситуации?
я ставила alert в код
CODE (javascript):
скопировать код в буфер обмена
  1. function AddCompare(product) {
  2.         ProductsInCart.push(product);
  3.         var frm= $("frmProductCompare");
  4.         frm.product_id.value=product;
  5.         frm.func.value="comparisonAdd";
  6.         //frm.page.value = "shop.comparison_short";
  7.         handleUpdateCompare(frm);
  8. }

но тут нельзя поставить ссылку, а именно из-за ссылки я все это затеяла.
в общем с этой красотой у меня уже сдувает крышку... сама себе пообещала, что закончу этот проект - сажусь за изучение php. раньше он так критично не был нужен. а щас.....
 
 Top
zypikov
Отправлено: 05 Февраля, 2013 - 02:10:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




katjuha6 пишет:
я ставила alert в код

Это очень не красиво.

katjuha6 пишет:
но тут нельзя поставить ссылку, а именно из-за ссылки я все это затеяла.

ссылку на что?)

Насчет библиотек. То мы сейчас делаем достаточно одной jQuery. Лично я бы начал с изучения чистого js постепенно перезжая на фрэймворки. Хотя опять кому как..

Цитата:
а шифер надо иногда все таки крепить к крыше. в общем спать побольше... (сказала я, сама забыв что такое поспать нормально) =)))

Все сложнее. Когда какая я та падла меняет твою жизнь и ты ничего не можешь с этим сделать..

Если бы не моя усталость, написал бы я вам код поддержку через куки сохранение состояние надписи

(Отредактировано автором: 05 Февраля, 2013 - 02:14:15)



-----
У всего есть обратная сторона.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB