Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML]Js, dodawanie z formularzy, Proste (niedziałające) ćwiczenie :(
inspired
post 30.05.2012, 14:58:15
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.05.2012

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


Witam, chciałem zrobić sobie ćwiczenie z JavaScripts połączonego z formularzami. Ćwiczenie miało polegać na stworzeniu polecenia, które doda liczby, które użytkownik wpisał do dwóch formularzy, po tym klika button i pojawia się alert. Niestety to nie działa. Oto kod:
Witam, chciałem zrobić sobie prosty przykład, który by dodawał dwie liczby do siebie, które użytkownik wpisuje fo formularza. Problem jest w tym, że alert nie wyskakuje. Oto kod:

CODE
<form id="licz" name="licz" action=""><div>
<input type="text" name="first" id="first">
<input type="text" name="second" id="second">
<button onclick="return licz()">Dodaj!</button>
</div></form>

<script>
function licz()
{
var first = document.forms['licz'].first.value;
var second = document.forms['licz'].second.value;
var suma;
suma = first + second ;
alert('Wynik' +suma+ "!');
return false;
}
</script>


Dodam, że jestem kompletnie zielony, ponieważ dopiero się uczę smile.gif


POZDRAWIAM Inspired
Go to the top of the page
+Quote Post
IProSoft
post 30.05.2012, 15:04:06
Post #2





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Nie liczy Ci ponieważ formularz zostaje wysłany, a skrypt nie zdąży się wykonać.

Możesz poczytać o http://api.jquery.com/event.preventDefault/

Lub przenieść:
Kod
<button onclick="licz();return false;">Dodaj!</button>

pod FORM (tak jak napisałem ponieważ w Twoim jest błąd.).

Poza tym masz błędy w JS.
Zainstaluj sobie Firebug

Ten post edytował IProSoft 30.05.2012, 15:04:17


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
skowron-line
post 30.05.2012, 15:04:58
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


[JAVASCRIPT] pobierz, plaintext
  1. function licz()
  2. {
  3. var first = document.forms['licz'].first.value;
  4. var second = document.forms['licz'].second.value;
  5. var suma;
  6. suma = parseFloat(first) + parseFloat(second); // rzutowanie na liczbe zmienno przecinkową
  7. alert('Wynik' +suma+ "!');
  8. return false;
  9. }
[JAVASCRIPT] pobierz, plaintext

z formularza z pól zawsze pobierane są stringi więc żeby przeprowadzać działania matematyczne trzeba zmienić ich typ na float lub int
parseFloat i parseInt

Jeżeli dalej nie pokaże się alert zobacz do konsoli błędów co pokazuje


Edit:
@IProSoft buttonem się nie wysyła formularzy smile.gif

Ten post edytował skowron-line 30.05.2012, 15:06:01


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
IProSoft
post 30.05.2012, 15:33:33
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Cytat(skowron-line @ 30.05.2012, 16:04:58 ) *
Edit:
@IProSoft buttonem się nie wysyła formularzy smile.gif

Wysłać można nawet span'em, zależy od inwencji smile.gif
Tak samo jak cały skrypt powinien być inaczej napisany itp itd ale do takich rzeczy powinien dojśc sam więc podałem mu tylko najprostszą drogę smile.gif


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
kamil4u
post 30.05.2012, 15:54:29
Post #5





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Dodam tylko, że musisz ostrożniej nazywać zmienne, funkcje i atrybuty "id". Część przeglądarek( na pewno IE, inne chyba nie, ale nie pamiętam teraz ) tworzy sobie zmienne globalne oparte na elemencie DOM( zwykły element HTML ), gdy jest nadawane id. Czasami prowadzi to do błędu w postaci: "licz is not a function".

Cytat
@IProSoft buttonem się nie wysyła formularzy smile.gif

Z tym też jest różnie smile.gif Generalnie w ogóle nie powinno się korzystać z <button, a <input type="button|submit|itd.">, ale jak jest w dokumentacji w3c button ma 3 różne typy( submit, reset i button ), ale:
Cytat
submit: Creates a submit button. This is the default value.
. Tak więc ~skowron-line masz rację( w praktyce ), ale i nie masz racji( w teorii ) smile.gif

Cytat
Wysłać można nawet span'em, zależy od inwencji smile.gif

Chodziło raczej o "normalne wysyłanie", a nie przez JS.

Co do tematu to jeszcze takie podpowiedzi odnośnie kodu:
- używaj funkcje DOM-owskie - getElementById, getElementsByTagName itd. - jest to znacznie wygodniejsze
-
Cytat
alert('Wynik' +suma+ "!');
Nie te cudzysłowów
- używaj konsoli błędów i firebug-a
- korzystaj z rady ~skowron-line

Pozdrawiam

Ten post edytował kamil4u 30.05.2012, 15:55:07


--------------------
Go to the top of the page
+Quote Post
inspired
post 30.05.2012, 17:15:14
Post #6





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 30.05.2012

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


A mógł by mi ktoś wytłumaczyć dlaczego to pierwsze niedziała a to drugie tak? wink.gif

CODE
<!--pierwsze-->
<form id="dodaj" action=""><div>
<input type="text" id="pierwszy">
<input type="text" id="drugi">
<button onclick="return ObliczCume()">Do</button>
</div></form>
<script>
function ObliczSume()
{
var first = document.getElementById(dodaj).pierwszy.value;
var second = document.getElementById(dodaj).drugi.value;
var suma= parseInt(first) + parseInt(second) ;
alert(+ suma + '!');
return false;
}
</script>

<!--drugie-->
<form id="elo" action=""><div>
<input type="text" name="pierwsze">
<input type="text" name="drugie">
<button onclick="return witamciebie()">Pozdrów!</button>
</div></form>
<script>
function witamciebie()
{
var firsto = document.forms['elo'].pierwsze.value;
var secondo = document.forms['elo'].drugie.value;
var suma = parseInt(firsto) + parseInt(secondo) ;
alert(' '+ suma +'!');
return false;
}
</script>


Ten post edytował inspired 30.05.2012, 17:19:08
Go to the top of the page
+Quote Post
kamil4u
post 30.05.2012, 17:53:42
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Przeczytaj jeszcze raz mój post:
Cytat
- używaj konsoli błędów i firebug-a


A konsola błędów mówi... no właśnie sprawdź sam - podpowiem, że masz literówkę


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 06:59