Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Умножение jquery
 
 автор: kapitalist   (04.10.2013 в 11:55)   письмо автору
 
 

Мне нужно сделать умножение значений подгружаемых input`ов.
Подгрузку input делаю так
    $('#add').click(function() {
        $('<tr id="str"><td><input type="text" name="name[]" style="width: 283px"></td><td><input type="text" name="quantity[]" style="width: 50px" class="quantity" id="quantity"></td><td><input type="text" name="price[]" style="width: 100px" class="price" id="price"></td><td><input type="text" name="sum[]" style="width: 120px" class="sum" id="sum"></td></tr>').appendTo('.table_base');
    });


Умножить пытаюсь так
$("input[name='quantity[]'],input[name='price[]']").change(function () {
        var quantity = $("#quantity").val();
        var quantity = parseFloat(quantity);
         
        var price = $("#price").val();
        var price = parseFloat(price);      
 
        var result = quantity * price;
 
        $("#sum").val(result);
      });

Но так умножение срабатывает только для первой подгружаемой строки. Как сделать чтобы перемножались и остальные подгружаемые инпуты?

  Ответить  
 
 автор: Deed   (04.10.2013 в 13:47)   письмо автору
 
   для: kapitalist   (04.10.2013 в 11:55)
 

Потому, что значение id в документе должно быть уникальным.
Ваш скрипт находит самый первый на странице <input type="text" name="sum[]" style="width: 120px" class="sum" id="sum"> и лепит в него значение самых первых id="quantity" и id="price".

  Ответить  
 
 автор: kapitalist   (04.10.2013 в 13:52)   письмо автору
 
   для: Deed   (04.10.2013 в 13:47)
 

А как мне при подгрузке инпута задать ему уникальное значение ид?

  Ответить  
 
 автор: Deed   (04.10.2013 в 19:39)   письмо автору
 
   для: kapitalist   (04.10.2013 в 13:52)
 

Да это и не нужно: http://jsbin.com/oLIQEnA/1/edit?html,js,output

  Ответить  
 
 автор: kapitalist   (04.10.2013 в 23:20)   письмо автору
 
   для: Deed   (04.10.2013 в 19:39)
 

Вау. Большое спасибо, сейчас буду сидеть разбираться в коде.

  Ответить  
 
 автор: kapitalist   (05.10.2013 в 09:58)   письмо автору
 
   для: Deed   (04.10.2013 в 19:39)
 

А вы не подскажите, как это обработать в php коде. Если сделать так:
$name_pr = isset($_POST['name_pr']) ? $_POST['name_pr'] : array();
foreach ($name_pr as $k) {
        echo "$k";
    }

то отображаются строки заданные html, а подгружаемые через js не обрабатываются

  Ответить  
 
 автор: Deed   (05.10.2013 в 10:57)   письмо автору
 
   для: kapitalist   (05.10.2013 в 09:58)
 

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

<?
$echo
='<div class="result">';
foreach(
$name_pr as $k) {
    
$echo.='<span class="result_element">'.$k.'</span><br>';
}
$echo.='</div>';
echo 
$echo;
?>

  Ответить  
 
 автор: kapitalist   (06.10.2013 в 11:27)   письмо автору
 
   для: Deed   (05.10.2013 в 10:57)
 

К сожалению это не помогло.
Я вообще результат вывожу не через ajax. А просто пхп кодом на отдельной странице.
Но в любом случае отображает только одну строку.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования