Имя: Пароль:
IT
Веб-мастеринг
Ошибка в коде (PHP + JavaScript)
,
0 s-pc
 
23.03.15
11:00
Подскажите, пожалуйста, что, где и как правильно прописать вместо

===
<span  id=i1 class="price-new"  onchange=f() name="pk_price" data-bme="Цена"><?php echo $price; ?></span>
===

(см. рисунок по ссылке - http://clip2net.com/s/3eHkEq0)


Если <span></span> заменить на <input> - все работает. Но мне не нужен там <input> - там автоматом выводится цена, которая в данном месте не должна редактироваться.
1 zdas
 
23.03.15
11:02
попробуй сменить на <p> + onchange наверное не надо обрабатывать?
2 zdas
 
23.03.15
11:03
+1 хотя P вряд ли как панацея поможет, скорее всего надо смотреть стиль у span. Скинь пример картинки как отображается со span
3 s-pc
 
23.03.15
11:15
(1) Не помогло :-(

(2) - http://clip2net.com/s/3eHqZIZ
4 Asmody
 
23.03.15
11:24
(0) У тебя в js используется value. У span свойства value нет.
5 Asmody
 
23.03.15
11:26
можно вставить <input type="hidden"> или <input disabled="disabled">
6 s-pc
 
23.03.15
11:40
(5) не, не прокатывает.


Кстати, а может каким-то иным способом можно проблему решить, как-то проще? Мне просто нужно создать переменную Сумма и присвоить ей значение Кол-во * Цена.
7 stix2010
 
23.03.15
11:41
вместо value  -  html()
8 s-pc
 
23.03.15
11:41
9 stix2010
 
23.03.15
11:46
$('#i1').html(n1*n2);
10 Asmody
 
23.03.15
11:50
(6) что у тебя не прокатывает?

делаешь

<input id="i1" type="hidden" value="<?= $price; ?>"><span class="price-new"><?= $price; ?></span>
11 s-pc
 
23.03.15
12:03
(10) Перестал в i3 ошибку Nan показывать, но все равно пока не работает. Вот так я поменял - http://clip2net.com/s/3eHD8w4 - что неправильно сделал?
12 s-pc
 
23.03.15
12:05
+(10) вот сама форма - http://clip2net.com/s/3eHqZIZ
13 Asmody
 
23.03.15
12:11
(11) в js верни value, у скрытого input oninput не нужен. А вот аттрибуты name и data-bme лучше оставить, мало ли где они еще используются
14 s-pc
 
23.03.15
19:16
Чего-то у меня так ничего и не получилось.

В общем, вот сама форма - http://clip2net.com/s/3eJPGsF

Вот код, который рабочий - здесь все ОК. (вот ссылка на рисунок этого кода http://clip2net.com/s/3eJNzjN )

======================================
<script>
    function f(){
    var n1=document.getElementById('i1').value;
    var n2=document.getElementById('i2').value;
    document.getElementById('i3').value=Number(n1)*Number(n2);
    }
</script>    


<input id=i1 type="number" min="1" max="99" value=1 oninput=f()>

<input id=i2 value=5 oninput=f()>

<input id=i3 value=15  >

===========================================


А вот код, который получился с вашей помощью (здесь рисунок этого кода - http://clip2net.com/s/3eJNpqO ). Между тэгами <script> ничего не менял - там все тоже самое.

============================================
<input id=i1 class="q-mini" type="number" min="1" max="99" oninput=f() name="quantity" size="2" value="<?php echo $minimum; ?>" data-bme="Количество"/>

<input id=i2 oninput=f() type="hidden" value="<?= $price; ?>"><span class="price-new" name="pk_price" data-bme="Цена"><?= $price; ?></span>

<input id=i3 value=15  >
===============================================

В таком виде - не работает. Показывает NaN в поле id=i1


Где ошибка?
15 Asmody
 
23.03.15
19:22
(14) и чему у тебя равен $minimum в php?
И атрибуты name и data-bme должны быть у input, а не у span
16 s-pc
 
23.03.15
19:33
(15) $minimum всегда какую-нибудь цену показывает, т.е. нулевых значений не бывает. О, кстати, а может дело в том, что там дробные значения? Как это дело исправить?

а на счет data-bme = это переменная одного (другого) скрипта - которому пофиг, где этот параметр стоит - он всегда "угадывает" нужноые значения из строки.
17 Asmody
 
23.03.15
19:48
(16) вообще каша. Какого тогда этот $minimum делает в поле Количество?
18 s-pc
 
23.03.15
19:53
(17) ой, ошибся, перепутал  - это не цена - это количество - и  $minimum = 1.
19 Asmody
 
23.03.15
20:26
все там работает http://jsfiddle.net/cp0cr1mL/
20 s-pc
 
24.03.15
13:18
(20) Докопался до сути. Все проблема в том, что в переменную прайс (из другого скрипта) попадает значение "22.32 руб." вместо "22.32".

Не подскажешь, что тут можно сделать, чтобы вытащить из переменной числовое значение?

В пока оригинале вот так:

value="<?= $price; ?>">
21 Asmody
 
24.03.15
13:36
(20) вытащи регуляркой на php

<?php

function getPrice($p)
{
  $m = array();
  $pat = '/\d+.\d+/';
  retrun (preg_match($pat, $p, $m)) ? $m[0] : 0;
}
  
$price = getPrice($price);

...
22 Asmody
 
24.03.15
13:37
регулярка съелась
правлильно так

$pat = '/\d+.\d+/';
23 Asmody
 
24.03.15
13:38
да блин!
короче, нужен еще \ перед точкой
24 s-pc
 
24.03.15
14:03
(23) А еще вот так подсказали

<?php echo  floatval($price); ?>

так можно или здесь что-то не то?
25 Asmody
 
24.03.15
14:09
можно и так
26 s-pc
 
24.03.15
14:10
Наконец-то все получилось! Всем спасибо за помощь. Тема закрыта. :-)