Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> (jquery) podliczanie zawartości input po zwolnieniu klawisza
niebieszki
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 30.09.2010

Ostrzeżenie: (0%)
-----


Witam chciałbym napisać funkcję jquery ktora będzie wyliczac iloczyn 2 pól i wpisywała je do inputa wynik zaraz po wpisaniu 2 wartosci.

Poniżej przedstawiam obrazy i kod źródłowy:
(IMG:http://images38.fotosik.pl/615/053211c552122b7amed.png)

  1. <tr>
  2. <td>Liczba 1</td>
  3. <td>Liczba 2</td>
  4. <td>Wynik</td>
  5. </tr>
  6. </thead>
  7. <tr>
  8. <td><input name="liczba1[0]" id="liczba1[0]"></td>
  9. <td><input name="liczba2[0]" id="liczba2[0]"></td>
  10. <td><input name="wynik[0]" id="wynik[0]" disabled="disabled"></td>
  11. </tr>
  12. <tr>
  13. <td><input name="liczba1[1]" id="liczba1[1]"></td>
  14. <td><input name="liczba2[1]" id="liczba2[1]"></td>
  15. <td><input name="wynik[1]" id="wynik[1]" disabled="disabled"></td>
  16. </tr>
  17. .
  18. .
  19. .
  20. <tr>
  21. <td><input name="liczba1[n]" id="liczba1[n]"></td>
  22. <td><input name="liczba2[n]" id="liczba2[n]"></td>
  23. <td><input name="wynik[n]" id="wynik[n]" disabled="disabled"></td>
  24. </tr>
  25. </tbody>

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $("input[name='liczba2[0]']").keyup(
  3. function()
  4. {
  5. var wynik = $("input[name='liczba1[0]']").val()*$("input[name='liczba2[0]']").val();
  6. $("input[name='wynik[0]']").val(wynik);
  7.  
  8. });
  9. });
[JAVASCRIPT] pobierz, plaintext

powyższy kod działa dla pierwszego pola (co nie jest rzeczą dziwną)
liczba wierszy tabeli jest nieokreślona, co trzeba zastosować aby ta funkcja była bardziej uniwersalna? próbowałem z pętla for lecz niestety nie wyszło mi.
Czy zna ktoś jakieś rozwiązanie takiego problemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ziolo.92
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 1
Dołączył: 13.02.2011

Ostrzeżenie: (0%)
-----


Możesz używać notacji tablicowej w taki sposób:
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. var i=0;
  3. while(i <= $('table tr').length-2){
  4. $('#liczba1\\['+i+'\\], #liczba2\\['+i+'\\]')
  5. .val(0)
  6. .bind('change', function(){
  7. var id = $(this).attr('id');
  8. id = id.substr(id.indexOf('[')+1, id.length-2-id.indexOf('['));
  9. var wynik = $('#liczba1\\['+id+'\\]').val()*$('#liczba2\\['+id+'\\]').val();
  10. $('#wynik\\['+id+'\\]').val(wynik);
  11.  
  12. });
  13. i++;
  14. }
  15. });
[JAVASCRIPT] pobierz, plaintext

Ale jest to rozwiązanie mało elastyczne. Nadal proponuję Ci skorzystać z poniższego rozwiązania, które mimo że jest wolniejsze to są to takie wartości milisekund, że nie odczujesz różnicy, a dzięki zastosowaniu ":input" odnosi się również do pola select.
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $("table :input:not(:disabled)")
  3. .val(0)
  4. .bind('change', function(){
  5. var wynik = 1;
  6. var tr = $(this).parent().parent();
  7. tr.find(':input:not(:disabled)')
  8. .each(function(){
  9. wynik*=$(this).val();
  10. });
  11. tr.find('input:disabled').val(wynik);
  12. });
  13. });
[JAVASCRIPT] pobierz, plaintext


Ten post edytował ziolo.92 13.02.2011, 18:23:03
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 04:49