Jquery берет цену из диапазона, и я хочу сделать ее статической

я делаю эту функцию:

function price(val){
var test = $('span.hikashop_product_price_full:visible').text();
var test2 = test.split('%');
var test3 = test2[1].split(' ');
var test4 = test3[0].replace(',','.');
var eyy = parseFloat(test4) *val/100 + parseFloat(test4);
eyy = eyy.toFixed(2)
var ett = test.replace(test3[0]+' '+test3[1],'<span class=\"hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount\">'+eyy+' '+test3[1]+'</span>');
$('span.hikashop_product_price_full:visible').html(ett);

}

я беру значение из динамического тега <span> (скажем, оно динамическое, потому что оно изменяется в зависимости от другого поля). у меня есть поле

<select id="custome_vara" name="data[item][custome_vara]" size="1" onchange="price(this.value);">
<option value="" id="custome_vara_" selected="selected">alb</option>
<option value="20" id="custome_vara_20">stejar auriu</option>
<option value="30" id="custome_vara_30">moreiche</option>
</select>

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

пролет выглядит так

<span class="hikashop_product_discount">-10%</span><span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">51,34 €</span> </span> 

Вопрос:

Когда я вызываю функцию price(), она запускает выбор этой функции и делает выбор целым. Как сделать выделение статическим, а поле select/option добавить к этому статическому выбору процент только один раз для каждого варианта.

Я надеюсь, ты понял.

Извините за мой английский.

Спасибо.


person MiddleCloud    schedule 10.04.2012    source источник
comment
Я думаю, вы упускаете что-то, что нам нужно увидеть: span.hikashop_product_price_full - что это?   -  person Mark Schultheiss    schedule 11.04.2012
comment
span.hikashop_product_price_full is ‹span class=hikashop_product_price_full id=hikashop_product_price_full› ‹span class=hikashop_product_discount›-10%‹/span›‹span class=hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount›51,34 €‹/span› ‹/span› ‹/span›   -  person MiddleCloud    schedule 11.04.2012


Ответы (1)


сдача

<select id="custome_vara" name="data[item][custome_vara]" size="1" onchange="price(this.value);">

to

<select id="custome_vara" name="data[item][custome_vara]" size="1">

затем добавьте это:

$('#custome_vara').one('change',function(){
    price($(this+'option:selected').val());
});

РЕДАКТИРОВАТЬ: В надежде прояснить ваше намерение, я опубликую здесь некоторые «ошибки»:

Во-первых, вам не хватает примера разметки:

'span.hikashop_product_price_full:visible'

Второй:

eyy = eyy.toFixed(2)

должно быть:

eyy = eyy.toFixed(2);

В третьих:

'<span class=\"hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount\">'

можно записать как:

'<span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">'

Я создал эту страницу скрипки, чтобы помочь нам понять друг друга: http://jsfiddle.net/2fxxD/

EDIT2: я думаю, что вижу, что вы хотите. Посмотрите следующее в действии здесь: http://jsfiddle.net/2fxxD/3/

function priceNew(val) {
    var discountedPrice = $('.hikashop_product_price_with_discount');
    var percentOff = $('.hikashop_product_discount');
    var price = discountedPrice.text().split(' ');
    var decimalPrice = price[0].replace(',', '.');
    var eyy = parseFloat(decimalPrice) * val / 100 + parseFloat(decimalPrice);
    eyy = eyy.toFixed(2);
    var newPrice = eyy + ' ' + price[1];
    discountedPrice.text(newPrice);
    percentOff.text('-' + val + '%');
    $('.hikashop_product_price').text(newPrice);
}

$('#custome_vara').one('change', function() {
    priceNew($(this + 'option:selected').val());
});

Разметка:

<select id="custome_vara" name="data[item][custome_vara]" size="1">
    <option value="" id="custome_vara_" selected="selected">alb</option> 
    <option value="20" id="custome_vara_20">stejar auriu</option>
    <option value="30" id="custome_vara_30">moreiche</option>
</select>
<div>
<span class="hikashop_product_price_full" id="hikashop_product_price_full"> 
    <span class="hikashop_product_discount">-10%</span>
    <span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">51,34 €</span> 
    </span>
</div>
person Mark Schultheiss    schedule 10.04.2012
comment
ty для ответа, но я приведу вам пример, если var тестирует его изменение функцией, которую я создал, он воспринимается как новый var и добавляет к нему%, как будто это новое число. ex test = 40 * x/100 + 40, и в следующий раз, когда я вызову функцию, она test = total * x/100 + total, которую я хочу добавить только один раз x/100 (где x - значение из выбора/опции) - person MiddleCloud; 10.04.2012
comment
мне нужно взять начальную цену var test без изменения этого выбора/опции - person MiddleCloud; 10.04.2012
comment
Я несколько смущен вашим комментарием и вопросом. Я использовал, мне нужно запустить только один раз, чтобы добавить % к цене в качестве основы для этого ответа (запустить один раз). Я бы посоветовал вам изменить свой вопрос, чтобы показать действие до, определить действие (выбрать изменение, щелкнуть и т. д.) и ПОСЛЕ желаемого выходного действия. - person Mark Schultheiss; 10.04.2012
comment
Вопрос: когда я вызываю функцию price(), она запускает выбор этой функции и делает выбор целым. Как сделать выделение статическим, а поле select/option добавить к этому статическому выбору процент только один раз для каждого варианта. Я надеюсь, ты понял. Спасибо. - person MiddleCloud; 10.04.2012