FOK!forum / Digital Corner / [Javascript] Formulier versturen met tekstlink
schwa78dinsdag 30 december 2003 @ 10:18
Ik wil dat een formulier op mijn pagina verstuurd wordt door een tekstlink ipv een button.

Nu heb ik het volgende stukje script gevonden:

code:
<form name="theForm">
<input type=text name="formInput">
<a href="javascript:document.theForm.submit();">Submit</a>
</form>

Probleem is alleen dat ik afhankelijk van welke link geklikt wordt, nog een extra variabele meesturen om aan te geven wat er gedaan moet worden na het verzenden van het formulier (in PHP).

Als ik een hidden-fiels aanmaak, dan krijgt die variabele die waarde onafhankelijk van welke link ik klik.

Wie weet hoe ik dit op kan lossen?

QuietGuydinsdag 30 december 2003 @ 10:28
<a href="javascript:document.theForm.hiddenveldje.value='bla';document.theForm.submit();">Submit</a>
JackHererdinsdag 30 december 2003 @ 10:32
code:
<a href="javascript:document.theForm.submit();">Submit</a>
boeheoeoeo neee

een anchor is NIET voor het aanroepen van javascripts, gebruik hiervoor een span als je het voor text wilt doen. en helemaal niet in de href.

[code]

<script type="text/javascript">

function submit(id) {
document.getElementById('hidden').value = id;
document.form.submit();
}

<span onclick="submit(id);">Submit</span>

<input type="hidden" id="hidden" value="-1"

als je dit toevoegd, dan zet hij elke keer de value van [id] in de hidden field, niet mooi, wel effectief

schwa78dinsdag 30 december 2003 @ 10:35
Ik heb nu staan:
code:
<a href="javascript:document.form1.a.value='verwijderen';document.form1.submit();">verwijderen</a>
De link verstuurt het formulier wel nog steeds, maar als ik op de volgende pagina kom en ik zeg echo $a; dan blijft het angstvallig stil.
QuietGuydinsdag 30 december 2003 @ 10:38
quote:
Op dinsdag 30 december 2003 10:35 schreef schwa78 het volgende:
Ik heb nu staan:
code:
<a href="javascript:document.form1.a.value='verwijderen';document.form1.submit();">verwijderen</a>
De link verstuurt het formulier wel nog steeds, maar als ik op de volgende pagina kom en ik zeg echo $a; dan blijft het angstvallig stil.
Je moet wel een hidden field a aanmaken eerst, en $_GET[a] of $_POST[a] gebruiken.
hmmm_lasagne_dinsdag 30 december 2003 @ 10:38
zie bovenstaande post

die is erg netjes
in de volgnde page echo je vervolgens $hidden

schwa78dinsdag 30 december 2003 @ 10:44
Ik heb nu:
code:
<head>
<script type="text/javascript">

function submit(id) {
document.getElementById('hidden').value = id;
document.form1.submit();
}
</script>
</head>
<body>

<form name="form1" action="index.php" method="post">
<input type="hidden" id="hidden" value="-1">
<span onclick="submit('verwijderen');">Submit</span>
</form>
</body>


Hij submit wel netjes, maar als ik op de volgende pagina echo $hidden doe, dan blijft het wederom stil.
QuietGuydinsdag 30 december 2003 @ 10:46
quote:
Op dinsdag 30 december 2003 10:44 schreef schwa78 het volgende:
Ik heb nu:
code:
[knip]
Hij submit wel netjes, maar als ik op de volgende pagina echo $hidden doe, dan blijft het wederom stil.
Doe eens echo $_POST[hidden]
schwa78dinsdag 30 december 2003 @ 10:49
quote:
Op dinsdag 30 december 2003 10:46 schreef QuietGuy het volgende:

[..]

Doe eens echo $_POST[hidden]


Helaas blijft het dan nog steeds stil...
QuietGuydinsdag 30 december 2003 @ 10:53
quote:
Op dinsdag 30 december 2003 10:49 schreef schwa78 het volgende:
[..]
Helaas blijft het dan nog steeds stil...
Je programmeert ook niet echt vriendelijk, ik pas ff je code aan zodat het ook in niet-MSIE-browsers werkt:
code:
<html><head>
<script type="text/javascript">
function s_submit(id) {
document.form1.s_hidden.value = id;
document.form1.submit();
}
</script>
</head>
<body>
<?=$_POST[s_hidden];?>
<form name="form1" action="index.php" method="post">
<input type="hidden" name="s_hidden" value="-1">
<span onclick="s_submit('verwijderen');">Submit</span>
</form>
</body>
</html>

schwa78dinsdag 30 december 2003 @ 10:56
Heej, nu doet ie het wel...
Thanks!!!!!!

Ik ga meteen kijken wat er mis gaat op mijn pagina...

schwa78dinsdag 30 december 2003 @ 11:00
Hij doet het!!!

2 kleine foutjes zaten er nog in:
<input type="hidden" id="hidden" value="-1">
ipv
<input type="hidden" name="hidden" value="-1">

en de functie hernoemt naar s_submit ipv submit.

Allen bedankt!!!

QuietGuydinsdag 30 december 2003 @ 11:01
quote:
Op dinsdag 30 december 2003 10:56 schreef schwa78 het volgende:
Heej, nu doet ie het wel...
Thanks!!!!!!

Ik ga meteen kijken wat er mis gaat op mijn pagina...


Mja, sowieso een functie genaamd 'submit' en een veld genaamd 'hidden' kan al conflicten geven.

Daarnaast had je het hidden field geen naam gegeven, alleen een id. De id is alleen clientside; de name is de naam die naar de server wordt gestuurd.

Dit was het wel zo'n beetje

schwa78dinsdag 30 december 2003 @ 11:13
Nog een laatste vraagje

Hoe zorg ik er nou voor dat die <span> eruit ziet als een link? Ik denk dat veel van mijn bezoekers het niet meteen snappen als het er niet uitziet als een link...

QuietGuydinsdag 30 december 2003 @ 11:17
quote:
Op dinsdag 30 december 2003 11:13 schreef schwa78 het volgende:
Nog een laatste vraagje

Hoe zorg ik er nou voor dat die <span> eruit ziet als een link? Ik denk dat veel van mijn bezoekers het niet meteen snappen als het er niet uitziet als een link...


Gewoon een <a> van maken:
<span onclick="s_submit('verwijderen');">Submit</span>
wordt:
<a href="javascript:s_submit('verwijderen');">Submit</a>
óf:
<a href="#" onclick="s_submit('verwijderen');">Submit</a>
JackHererdinsdag 30 december 2003 @ 11:37
quote:
Mja, sowieso een functie genaamd 'submit' en een veld genaamd 'hidden' kan al conflicten geven.
Dikke onzin.

Functienamen en namen van velden zijn onafhankelijk.

Check de DOM

QuietGuydinsdag 30 december 2003 @ 11:40
quote:
Op dinsdag 30 december 2003 11:37 schreef JackHerer het volgende:
[..]
Dikke onzin.
Functienamen en namen van velden zijn onafhankelijk.
Voorbeeld:
code:
<form name="form1">
<input type="text" name="submit" value="blaat">
</form>

Dan gaan we het formulier submitten:
document.form1.submit();
of een alias maken voor het veld 'submit'
var txt=document.form1.submit;

Met functienamen heb je gelijk, dit zal niet uit maken, maar maakt de code ook niet duidelijker.

schwa78dinsdag 30 december 2003 @ 17:00
hehehehe... ik had nog een vraagje

Is het ook mogelijk om 2 variabelen mee te sturen met het bovenstaande script??

Als dat zou kunnen dan zou dat helemaal tof zijn!

QuietGuydinsdag 30 december 2003 @ 17:01
code:
<html><head>
<script type="text/javascript">
function s_submit(id,id2) {
document.form1.s_hidden.value = id;
document.form1.s_hidden2.value = id2;
document.form1.submit();
}
</script>
</head>
<body>
<?=$_POST[s_hidden];?><br>
<?=$_POST[s_hidden2];?>
<form name="form1" action="index.php" method="post">
<input type="hidden" name="s_hidden" value="-1">
<input type="hidden" name="s_hidden2" value="-1">
<a href="javascript:s_submit('verwijderen','optie2');">Submit</a>
</form>
</body>
</html>

Wil je hem met 3 ook nog hebben?
schwa78dinsdag 30 december 2003 @ 17:21
quote:
Op dinsdag 30 december 2003 17:01 schreef QuietGuy het volgende:
code:
<knip>
Wil je hem met 3 ook nog hebben?
Neej hoor. Voorlopig moet dit genoeg zijn

Anyway, wederom bedankt!

QuietGuydinsdag 30 december 2003 @ 17:23
quote:
Op dinsdag 30 december 2003 17:21 schreef schwa78 het volgende:
[..]
Anyway, wederom bedankt!
Dat kan ook in Bedank hier QuietGuy...