Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Загнать результат в переменную


Автор: sokpet 29.8.2010, 17:16
Добрый день.

Подскажите пожалуйста как загнать результат в переменную и потом изпользовать ее через Смарти?

есть форма для расчета цены (привожу только нужную часть формы):

Файл: product.tpl

Добавляем переменную базовой цены:

Код

var MainPrice = '{$product->getPrice(true, $smarty.const.NULL)}';


 
Код

 <div id="medida1">
        <label for="frameLength" class="medida">{l s='Altura (cm):'}</label>
        <input type="text" name="frameLength" onChange="on_the_fly(this.form)" size="6" maxlength="6"/><span class="medida_example">(Ej: 80.27)</span>
    </div>
    <div id="medida2">
        <label for="frameWidth" class="medida">{l s='Anchura (cm):'}</label>
        <input type="text" name="frameWidth" onChange="on_the_fly(this.form)" size="6" maxlength="6"/><span class="medida_example">(Ej: 110.12)</span>
    </div>
    <div>
        <label for="total" class="total">{l s='Subtotal'}</label>
        <input id="total" name="total" disabled="disabled" />
    </div>



В init.php регистрируем функцию Смарти:

Код

$smarty->register_function('on_the_fly', array('Tools', 'displayPriceSmarty'));


В tools.js добавляем саму функцию:

Код

function on_the_fly(formObj){
    var length = new Number(formObj.frameLength.value);
    var width = new Number(formObj.frameWidth.value);
    var basePrice = ((2 * length) + (2 * width))/100;
    var price = basePrice * MainPrice;
    formObj.total.value = price.toFixed(2); ;
}



До этого момента ВСЕ РАБОТАЕТ.  А вот как результат, который получается в
 
Код

<input id="total" name="total" disabled="disabled" /> 
 загнать в переменную и после этого использовать вот в таком контексте :


Код

<span id="our_price_display">{convertPrice price=$product->getPrice(true, $smarty.const.NULL)} //Вместо этого нужно высвечивать полученный результат


Подскажите плиз.

Заранее всем спасибо

Автор: bars80080 29.8.2010, 21:53
вам прежде всего сюда: http://phpfaq.ru/na_tanke

после прочтения, вы должны определиться, когда вы хотите загнать переменную. на открытой странице, либо на новой после переходе на неё


Автор: sokpet 29.8.2010, 22:42
Переменную нужно загнать на открытой странице + еще на одну после перехода на нее.... 

Автор: bars80080 30.8.2010, 13:38
на открытой странице вы можете сделать максимум следующее - получить переменную в javascript, отправить ajax-запрос с этой переменной на сервер к модулю, который вернёт вам нужный кусок хтмл-разметки, и вставить с помощью javascript эту разметку куда надо

на сервере при этом данная переменная может быть получена из глобальных массивов $_GET или $_POST, а затем уже вставлена обычным способом в шаблон


если же после перехода, то данную переменную надо всего лишь засунуть в соответствующий параметр. к примеру, если переход будет осуществляться кликом по ссылке, то надо будет в хвост к ссылке дописать ?param=peremen, после чего на сервере данная переменная может быть получена из $_GET['param'], а затем уже вставлена обычным способом в шаблон

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)