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
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ę (IMG:style_emoticons/default/smile.gif)


POZDRAWIAM Inspired
Go to the top of the page
+Quote Post
IProSoft
post
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
Go to the top of the page
+Quote Post
skowron-line
post
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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował skowron-line 30.05.2012, 15:06:01
Go to the top of the page
+Quote Post
IProSoft
post
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 (IMG:style_emoticons/default/smile.gif)

Wysłać można nawet span'em, zależy od inwencji (IMG:style_emoticons/default/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ę (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kamil4u
post
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 (IMG:style_emoticons/default/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 ) (IMG:style_emoticons/default/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
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? (IMG:style_emoticons/default/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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:29