|
|
13.01.2011, 05:57
|
|
I_CaR
Зарегистрирован: 2010-11-30
Сообщений: 84
|
Здравствуйте, реализовал на сайте вот такое, есть товар - корзина активна, нет товара - неактивна:
Цитата:" . opt_case($f_StockUnits, "<button type='submit'><img src='".$SUB_FOLDER."/images/i_cart.gif'></button>" , "<button type='submit' disabled='disabled'><img src='".$SUB_FOLDER."/images/i_cart_off.gif'></button>")."
Но рабо(то)датель желает, чтоб если товара нет, был выбор ложить его в корзину или нет. Реализовал вот так:
Цитата:
<script language="JavaScript"> (примеч.автора - на сайте одинарные ковычки! - <script language='JavaScript'>)
function Choice()
{
if (confirm('Товара сейчас нет в наличии\n Всё равно поместить его в карзину?'))
{
submit
}
else
{
alert('Действие было отменено.');
}
}
</script>
<input type='submit' value='в корзину' onClick='Choice()'>
Дело в том, что на локальном ПК это работает, т.е. выскакивает окно confirm'a, на моем хостинге (бесплатном) это тоже работает, а вот на хостинге магазина (платном) нет.
Я предполагаю тут дело не в хостинге, а в восприятии скриптов NetCat'ом.
Какая есть альтернатива этому коду, не очень громоздкая в исполнении?
С Уважением - I.CaR®
|
|
|
13.01.2011, 12:01
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Код:<script language=\"JavaScript\">
Temet nosce...
|
|
|
14.01.2011, 09:06
|
|
I_CaR
Зарегистрирован: 2010-11-30
Сообщений: 84
|
ну это уж через-чур бонально, это начало я скопировал с DreamWeaver'а, в бд там
нормально.
<Script language='JavaScript'>
|
|
|
14.01.2011, 10:03
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Тогда проблема к неткету не имеет никакого отношения ибо яваскрипты выполняются на стороне браузера пользователя. Разбирайтесь со своим яваскриптом.
Temet nosce...
|
|
|
14.01.2011, 10:38
|
|
I_CaR
Зарегистрирован: 2010-11-30
Сообщений: 84
|
И браузеры у меня одни и теже, я же и отлажевал страницу и локально и на хостинге одними и теми же браузерами, обычно для разработки тестируют минимум как на 3-х поп браузерах.
Оказывается всё было из-за этого обычного знака переноса на др. строку - \n!
if (confirm('Товара сейчас нет в наличии\n Всё равно поместить его в карзину?'))
И разве это не NetCat его обрабатывает в теле бд, при запросе с браузера пользователя? а потом выдаёт ему результат обработки?
Но вот почему браузер всё равно посылает submit, когда есть же отмена его подтверждения в кейсе opt_case($f_StockUnits? Если товара
> 0, то <button type='submit'></button>, а если
< 0, то <button type='submit' onClick='Choice()'></button>
Тут же идёт подтверждения действия submit, и при Cancel, всё равно товар почему-то попадает в корзину. Могу привести код страницы полностью.
|
|
|
14.01.2011, 11:50
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Ф-ия opt_case переданные ей параметры прогоняет через eval - поэтому символ '\n' сработал как перенос строки. Надо поставить экранирующий слеш (или слеши) перед '\n'.
Лучше отказаться от использования opt_case, заменив ее на (условие?условие_выполнено:условие_не_выполнено)
и еще поправьте:
Код:if (confirm('Товара сейчас нет в наличии\n Всё равно поместить его в кОрзину?'))
Temet nosce...
|