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

HTML+CSS+JavaScript

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

 

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

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

тема: Автоматическое суммирование значений в полях формы без нажатий кнопок
 
 автор: nurmyrza   (27.04.2009 в 11:15)   письмо автору
 
 

Здравствуйте
у меня никак не получается авто суммирование полей без нажатий кнопок
было такое код но я немо его использовать
Помогите как его использовать или как решить задачу???


<html>
<head>
        <table id="tble" class="grey" border="1" style="margin: 0 0 20px 0;" padding="1px">
         <tr id="header">
          <td width="310px"><b>Наименование</b></td>
          <td width="55px"><b>К-во</b></td>
          <td width="40px"><b>Ед.</b></td>
          <td width="60px"><b>Цена</b></td>
          <td width="80px"><b>Сумма</b></td>
          <td width="26px">&nbsp;</td>
         </tr>
        
        </table>

<script language="JavaScript">
        
    function add_row() {
    var lr = $("#last_row");
        var s = '<tr class="row"><td><input name = "items.name" type="text" value=""></td>';
        s+='<td><input type="text" name = "items.quantity" class = "qnt" value="" / ></td>';
        s+='<td><input type="text" name = "items.units" class = "unt" value="" / ></td>';
        s+='<td><input type="text" name = "items.price" class = "prc" value="" / ></td>';
        s+='<td><input type="text" name = "items.total_price" class = "sum" value="" / ></td>';
        s+='<td align="center"><center><img class="delete"  src="/media/images/cut_red.gif" alt="уд."/></center></td></tr>';
        var new_row = $(s);
        lr.before(new_row);
        set_events();
    }
        $(document).ready(function() {
            set_events();
            add_row();
            count_totals();
         });
        function set_events() {
           $("img.delete").click(delete_row);
           $("input.qnt, input.prc").blur(on_qnt_change);
           $("input.sum").blur(on_sum_change);
        }
        function check_values(tr) {
          var sum_input = $("input.sum", tr);
          var qnt_input = $("input.qnt", tr);
          var prc_input = $("input.prc", tr);
          var qnt = parseFloat(qnt_input.val()).toFixed(3);
          var prc = parseFloat(prc_input.val()).toFixed(2);
          var sum = parseFloat(sum_input.val()).toFixed(2);
          if (isNaN(qnt)) qnt_input.val("")
          else qnt_input.val(qnt);
          if (isNaN(prc)) prc_input.val("")
          else prc_input.val(prc);
          if (isNaN(sum)) sum_input.val("")
          else sum_input.val(sum);
        }
        function count_totals() {
          var totals = 0;
          $("tr.row", $("#tble")).each(
              function()
              {
              var row_sum = parseFloat($("input.sum", this).val());
              if (!isNaN(row_sum)) totals = totals + row_sum;
              }
          );
          $("#total_value").text(totals.toFixed(2)) 
        }
    </script>
        
</head>
</html>

  Ответить  
 
 автор: PAT   (27.04.2009 в 14:03)   письмо автору
 
   для: nurmyrza   (27.04.2009 в 11:15)
 

Полагаете, что тут собрались экстрасенсы, кои безо всякого кода догадаются - что именно делает ваша функция $ ()?

Выкладывать надо РАБОЧИЙ код, который можно скопировать и запустить в браузере AS IS.
И браузер не будет писать "Требуется объект".

Когда ЭТО поймёте, тогда, может быть, кто-то и поможет.

  Ответить  
 
 автор: mihdan   (27.04.2009 в 14:07)   письмо автору
 
   для: PAT   (27.04.2009 в 14:03)
 

Это jquery

  Ответить  
 
 автор: PAT   (27.04.2009 в 14:10)   письмо автору
 
   для: mihdan   (27.04.2009 в 14:07)
 

А что, jquery сегодня у всех "сам по себе стоит" во всех браузерах?
И только я один, такой отсталый от жизни, его в браузере не имею?

  Ответить  
 
 автор: nurmyrza   (27.04.2009 в 14:16)   письмо автору
 
   для: PAT   (27.04.2009 в 14:10)
 

Короче мне нужна форма с несколькими полями и конце сумма значений полей
без нажатий кнопок
при изменений значений полей сумма автоматический изменялись

  Ответить  
 
 автор: AlexSol   (27.04.2009 в 14:42)   письмо автору
 
   для: nurmyrza   (27.04.2009 в 14:16)
 

повесть запуск обсчета на событие change()

  Ответить  
 
 автор: PAT   (27.04.2009 в 14:50)   письмо автору
 
   для: nurmyrza   (27.04.2009 в 14:16)
 

<html>
<head>
<script>
function fW () {//для целых чисел (в т.ч. < 0)
for (var t = document.getElementById
('summands').getElementsByTagName ('input'),
k = j = s = 0; j < t.length; j++)
if (t [j].value.length && !t [j].value.
replace (/^\-?\d+/g, '').length)
{s += t [j].value * 1; k++}
document.getElementById ('rezult').value =
(k == t.length) ? s : '???'; TIM = setTimeout (fW, 10)}
function fS () {clearTimeout (TIM)}
</script>
</head>
<body>
<div id="summands">
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0"><br>+<br>
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0"><br>+<br>
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0">
</div>

<hr>
<input id="rezult" value="0">
</body>
</html>

  Ответить  
 
 автор: nurmyrza   (28.04.2009 в 15:35)   письмо автору
 
   для: PAT   (27.04.2009 в 14:50)
 

УРАА !!!
Спасибо!! работает Вы очень мне помогли

  Ответить  
 
 автор: nurmyrza   (06.05.2009 в 06:35)   письмо автору
 
   для: PAT   (27.04.2009 в 14:50)
 

Здравствуйте PAT
а как можно суммировать выборочно?? а то бывает еще другие поля
Заранее спасибо!

  Ответить  
 
 автор: PAT   (06.05.2009 в 07:09)   письмо автору
 
   для: nurmyrza   (06.05.2009 в 06:35)
 

<html>
<head>
<script>
function fW () {//для целых чисел (в т.ч. < 0)
var W = 3; //количество суммируемых полей класса sum
for (var t = document.forms ['myForm'].getElementsByTagName
('input'), k = j = s = 0; j < t.length; j++)
if (t [j].className == 'sum' && t [j].value.length && !t [j].value.
replace (/^\-?\d+/g, '').length) {s += t [j].value * 1; k++}
document.getElementById ('rezult').value =
(k == W) ? s : '???'; TIM = setTimeout (fW, 10)}
function fS () {clearTimeout (TIM)}
</script>
</head>
<body> 
<form name="myForm">
<input value="другое поле"><br>
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0" class="sum"><br>
<input value="сАвсем другое поле"><br>
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0" class="sum"><br>
<input value="вАЩще другое поле"><br>
<input onfocus="this.select (); fW ()" onblur="fS ()" value="0" class="sum"><br>
<input value="не знаю какое, но другое поле"><br>
<input id="rezult" value="0">
</form> 
</body>
</html>

  Ответить  
 
 автор: Кент   (23.08.2016 в 11:22)   письмо автору
 
   для: PAT   (06.05.2009 в 07:09)
 

день добрый, он не считает автоматически, нужно нажать на поле, если в сомом коде value указать цифры они автоматически считать не будут только после нажатия п полю, а как сделать что бы результат сразу выводил без клика?

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

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