Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] onclick a onsubmit
Forum PHP.pl > Forum > Przedszkole
hhg
mam formularz ktory po otrzymaniu "hasła" przeniesie odwiedzajacego na strone ktorej nazwa jest polaczeniem hasla i .htm

oto formularz:

Kod
<form name="form">
                            Wpisz hasło: <input type="password" name="haselko">
                            <input type="button" name="open" value="Wy¶lij" onclick="check_pass()">
                        </form>


oto funkcja check_pass()

Kod
<script language="javascript" type = "text/javascript">
<!--
function check_pass()
{
    var strzal = document.form.haselko.value;
    if (strzal == "ukryty_plik") self.location = strzal + ".htm";
    else alert("Złe hasło!");
}
//-->
</script>


jezeli zastosuje jako submit w formularzu onclick to trzeba kliknac na button zeby skrypt sie wykonał. Chciałbym jednak żeby wykonywał sie też po wcisnieciu Enter jak skoncze pisac hasło. Dlatego zastapilem onclick - na onsubmit

Kod
<form name="form">
                            Wpisz hasło: <input type="password" name="haselko">
                            <input type="button" name="open" value="Wy¶lij" onsubmit="check_pass()">
                        </form>

ale z onsubmit wogole skrypt sie nie wykonuje.. tzn strona sie przeladowywuje ale obojetnie czy wpisze dobre czy zle haslo to nic sie nie dzieje: ani nie dostane alerta ze zle haslo ani mnie nie przeniesie na tajną strone.

Co robie źle?
jol.us_
onsubmit daj sobie do tagu form.

  1. <form name="form" onsubmit="check_pass();">



aha, i input powinenes miec typu submit a nie button
ciapek888
po pierwsze atrybut onsubmit daje się na tagu <form> a nie <input>,
po drugie nie możesz dać onsubmit, bo wtedy twój skrypt się wykonuje w tym czasie co dane są wysyłane, czyli pewnie nie wykonuje się wogóle, bo wysłanie formularza powoduje przeładoawnie strony
musisz jednak zrobić tak, jak było w pierwszej wersji, a twoje pytanie powinno brzmieć:
Jak zrobić, żeby po naciśnięciu entera, mój skrypt się wykonał?
ja tego niewiem ale chętnie się dowiem...

// - dopisane
zrób tak jak napisał jol.us_ i napisz czy działa?
jol.us_
Zeby strona sie nie przeladowala musi sie to przerobic.

Funkcje umieszczona w head:
  1. <script type = "text/javascript">
  2. <!--
  3. function check_pass() {
  4. var strzal = document.form.haselko.value;
  5. if (strzal == "ukryty_plik") {
  6. self.location = strzal + ".htm";
  7. return true;
  8. } else {
  9. alert("Złe hasło!");
  10. return false;
  11. }
  12. }
  13. //-->


Noi formularz
  1. <form name="form" onsubmit="return check_pass();">
  2. Wpisz hasło: <input type="password" name="haselko">
  3. <input type="submit" name="open" value="Wyślij">
  4. </form>



Dygresja:
Zakladam ze to tylko przyklad, bo istota sprawdzania hasla ktore jest zapisane w zrodle to pomylka.
hhg
faktycznie jol.us_ to jest kwestia glownie tych return true i false... nie przypuszczalbym

oczywiscie ze walidacja w js to lipa ale tematu pracy sie nie wybiera winksmiley.jpg
ciapek888
a u mnie coś nie działa:
Kod
function sprawdz() {
    var a = 0;
    var alarm = '';
    with(document.f) {
        if(imie.value=='') {alarm += ' imię'; a++}
        if(nazwisko.value=='') {alarm += (a)? ', nazwisko': ' nazwisko'; a++}
        if(pass1.value=='') {alarm += (a)? ', hasło': ' haslo'; a++}
        if(pass2.value=='') {alarm += (a)? ', potwierdzenie hasła': ' potwierdzenie hasła'; a++}
        if(pass1.value!=pass2.value) {alert('Hasło i potwierdzenie nie zgadzają się!'); return false}
        if(alarm.length>0) {alert('Wpisz'+alarm+'!'); return false}
    }
    var hid = document.getElementById('hid')
    zawartosc = 'jakas_tam _zawartosc'
    hid.innerHTML = zawartosc; return true
}
jak np nie wpisuje potwierdzenia to wyskakuje komunikat, ale i tak sie wywyła blinksmiley.gif
dlaczego?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.