this.href értékadás onclick eseménnyel
A probléma lényegében annyi, hogy újratöltés nélkül szeretnék átadni bizonyos adatokat egy fájlnak. Adott egy form és az abban található input elemek. A php rész nagyon egyszerű és nem is abba a kategóriába tettem, mivel a probléma forrása a javascript részből ered. Így néz ki a jelenlegi kód:
Amikor a this.href paranccsal próbálok értéket adni onclick eseménykor lényegében semmi sem történik. Pedig a formból a megfelelő dolgokat kéne kifalatoznia és beillesztenie a href értékeként.
■ <?php
if(($_GET['l'] == 1) or !isset($_GET['l'])){
echo '
<form name="lepes1form">
<div id="lepesek">
<a href="#" id="lepes1" onclick="this.href=\'rendel.php?l=1&szolgaltatas=\'+lepes1form.elements[\'szolgaltatas\'].value+\'&elefogadom=\'+lepes1form.elements[\'elfogadom\'].value+\'®_email=\'lepes1.elements[\'reg_email\'].value+\'®_jelszo=\'+lepes1form.elements[\'reg_jelszo\'].value;" class="loadinto-megrendeles" style="z-index: 3">Első lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=2\';" class="loadinto-megrendeles" style="z-index: 2">Második lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=3\';" class="loadinto-megrendeles" style="z-index: 1">Harmadik lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=4\';" class="loadinto-megrendeles">Negyedik lépés</a>
<div class="clear"></div>
</div>
<fieldset id="domain">
<legend>Szolgáltatás kiválasztása</legend>
<input type="checkbox" name="szolgaltatas[]" id="sz_domain" onchange="szolgaltatas()" value="1">
<label for="sz_domain">Domain</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_webhosting" onchange="szolgaltatas()" value="2">
<label for="sz_webhosting">Webhosting</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_nettelefon" onchange="szolgaltatas()" value="3">
<label for="sz_nettelefon">Nettelefon</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_email" onchange="szolgaltatas()" value="4">
<label for="sz_email">E-mail</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_ftp" onchange="szolgaltatas()" value="5">
<label for="sz_ftp">FTP</label>
</fieldset>
<fieldset id="aszf">
<legend>Általános szerződési feltételek</legend>
<div id="feltetelek">';
include('feltetelek.html');
echo'
</div>
<input type="checkbox" name="elfogadom" id="elfogadom" onchange="aszf()">
<label for="elfogadom">Megértem és elfogadom az általános szerződési feltételeket</label>
</fieldset>
<fieldset>
<legend>Felhasználónk vagy? Ha igen, add meg adataidat.</legend>
<input type="input" name="reg_email" value="E-mail cím" onFocus="clearText(this)" onBlur="clearText(this)">
<input type="password" name="reg_jelszo" value="Jelszó" onFocus="clearText(this)" onBlur="clearText(this)">
</form>';
}
if($_GET['l'] == 2){
echo 'Második lépés';
}
if($_GET['l'] == 3){
echo 'Harmadik lépés';
}
if($_GET['l'] == 4){
echo 'Negyedik lépés';
}
?>
if(($_GET['l'] == 1) or !isset($_GET['l'])){
echo '
<form name="lepes1form">
<div id="lepesek">
<a href="#" id="lepes1" onclick="this.href=\'rendel.php?l=1&szolgaltatas=\'+lepes1form.elements[\'szolgaltatas\'].value+\'&elefogadom=\'+lepes1form.elements[\'elfogadom\'].value+\'®_email=\'lepes1.elements[\'reg_email\'].value+\'®_jelszo=\'+lepes1form.elements[\'reg_jelszo\'].value;" class="loadinto-megrendeles" style="z-index: 3">Első lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=2\';" class="loadinto-megrendeles" style="z-index: 2">Második lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=3\';" class="loadinto-megrendeles" style="z-index: 1">Harmadik lépés</a>
<a href="#" onclick="this.href=\'rendel.php?l=4\';" class="loadinto-megrendeles">Negyedik lépés</a>
<div class="clear"></div>
</div>
<fieldset id="domain">
<legend>Szolgáltatás kiválasztása</legend>
<input type="checkbox" name="szolgaltatas[]" id="sz_domain" onchange="szolgaltatas()" value="1">
<label for="sz_domain">Domain</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_webhosting" onchange="szolgaltatas()" value="2">
<label for="sz_webhosting">Webhosting</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_nettelefon" onchange="szolgaltatas()" value="3">
<label for="sz_nettelefon">Nettelefon</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_email" onchange="szolgaltatas()" value="4">
<label for="sz_email">E-mail</label>
<input type="checkbox" name="szolgaltatas[]" id="sz_ftp" onchange="szolgaltatas()" value="5">
<label for="sz_ftp">FTP</label>
</fieldset>
<fieldset id="aszf">
<legend>Általános szerződési feltételek</legend>
<div id="feltetelek">';
include('feltetelek.html');
echo'
</div>
<input type="checkbox" name="elfogadom" id="elfogadom" onchange="aszf()">
<label for="elfogadom">Megértem és elfogadom az általános szerződési feltételeket</label>
</fieldset>
<fieldset>
<legend>Felhasználónk vagy? Ha igen, add meg adataidat.</legend>
<input type="input" name="reg_email" value="E-mail cím" onFocus="clearText(this)" onBlur="clearText(this)">
<input type="password" name="reg_jelszo" value="Jelszó" onFocus="clearText(this)" onBlur="clearText(this)">
</form>';
}
if($_GET['l'] == 2){
echo 'Második lépés';
}
if($_GET['l'] == 3){
echo 'Harmadik lépés';
}
if($_GET['l'] == 4){
echo 'Negyedik lépés';
}
?>
Amikor a this.href paranccsal próbálok értéket adni onclick eseménykor lényegében semmi sem történik. Pedig a formból a megfelelő dolgokat kéne kifalatoznia és beillesztenie a href értékeként.
tanácsok
2. a, használj valami js framework-öt, vagy tanulj meg cross-browser kódot írni
(lepes1form.elements[\'szolgaltatas\'].value -> document.getElementById("sz_domain").value)
2. b, onload-ra állítsd be a html elemekre a metódusaikat (onclick, onchange stb), a html és js kód szétválasztása miatt -> megint egy indok a framework használat mellett
2. c, oldal újratöltés nélküli működéshez ajax-ra lesz szükséged -> szintén egy újabb indok, hogy válassz egy js framework-öt
js framework(ök): jQuery (szerintem a legjobb), Prototype, ExtJs, Mootools .. etc