Klick auf Link prüfen

Hallo!

Kann mir jemand ein Script geben, das vor dem Absenden eines Formulars überprüft ob ein Link geklickt wurde? (wenn der Link nicht geklickt wurde, soll das Formular nicht abgesendet werden und eine Meldung erscheinen, dass der Link geklickt werden soll (zB ein alert))
Besides: Kann man bei onClick mehrere javascripts ausführen lassen?

Bsp: onClick=„check(); window()“

Danke Christoph

Hallo!

Auch Hallo!

Kann mir jemand ein Script geben, das vor dem Absenden eines
Formulars überprüft ob ein Link geklickt wurde? (wenn der Link
nicht geklickt wurde, soll das Formular nicht abgesendet
werden und eine Meldung erscheinen, dass der Link geklickt
werden soll (zB ein alert))

Also ich sehe mehrer Möglichkeiten:

  • Globale Variable:
    Im script-Bereich definierst Du eien Variable, die Du dann in der „onClick“-Funktion des Links setzt und in der Prüffunktion abtesten. Das eignet sich aber nur, wenn es wirklich nur ein Link ist. (Bei mehreren könnte man ein Array verwenden.>

  • Eigenschaft ergänzen:
    Du kannst in der onClick-Funktion des Links einfach dem Linke eine Eigenschaft hinzufügen. Beispiel:

    lnk=document.getElementById(linkname);
    lnk.pressed = 1;

In der Prüffunktion fragst Du den Wert einfach ab:

lnk=document.getElementById(linkname);
if ( !lnk.pressed )
{
 alert('Bitte Link noch anklicken!');
}

Allerdings haben alle diese Lösungen das Problem, dass nach dem Verlassen die Information, ob schon geklickt wurde oder nicht, weg ist. Dafür bliebe dann ein Cookie.

Besides: Kann man bei onClick mehrere javascripts ausführen
lassen?

Bsp: onClick=„check(); window()“

Ja das geht. ggf. schreibst Du „javascript:“ davor.

Danke Christoph

Bitte und Gruß
Volkmar

Hey!
Danke erstmal für die Atnwort.
Ich hab mal versucht das zu machen, aber ich mach wohl etwas falsch - es will nicht so recht klappen.

Hab erstmal im Header ein Script gemacht

<!–
linkGive()
{
lnk=document.getElementById(ddlink);
lnk.pressed = 1;
}

linkCheck()
{
lnk=document.getElementById(ddlink);
if ( !lnk.pressed )
{
alert(‚Bitte Link noch anklicken!‘);
}
}
// -->

So, dann hab ich den Link modelliert:

>>KLICKund den Absend-Button:Hab ich übersehen, noch…

Hallo Chritoph,

Hey!
Danke erstmal für die Atnwort.
Ich hab mal versucht das zu machen, aber ich mach wohl etwas
falsch - es will nicht so recht klappen.

Stimmt :wink:

Hab erstmal im Header ein Script gemacht

Korrigiertes Skript:
<!–
linkGive( linkid )
{
lnk=document.getElementById( linkid );
lnk.pressed = 1;
}

linkCheck( linkid )
{
lnk=document.getElementById( linkid );
if ( !lnk.pressed )
{
alert(‚Bitte Link noch anklicken!‘);
}
}
// -->

So, dann hab ich den Link modelliert:

Korrigiert:>>KLICK

und den Absend-Button:

Korrigiert:
So kannst Du es machen, wenn es nur ein Link ist, der zu prüfen ist. Falls mehrere Links geprüft werden sollen, solltest Du Prüffunktion so umstellen, dass sie die zu prüfenden Links „kennt“ und die Id nicht übergeben werden muss.

Gruß
Volkmar

Nunja, was soll ich sagen? Danke für deine Mühen, aber es funktioniert immer noch nicht so wirklich.
Den Tippfehler hab ich auch entfernt :wink: [linkGive(tihs.id)]
Irgendwas stimmt da noch nicht ganz…

Danke
Christoph

Hallo Christoph,

so funktionierts:smile:Test Links
<!–
function machWas( ausgabe )
{
alert( "Ich soll das hier ausgeben: " + ausgabe );
}

function markAsPressed( lnk )
{
lnk.pressed = 1;
}

function checkSingle( lnk )
{
var l = document.getElementsByName( lnk )[0];

if ( !l.pressed )
{
alert( ‚Der Link ’ + l.name + ’ wurde noch nicht angeklickt!‘ );
return false;
}
return true;
}

function checkAll( lnk )
{
var rv = true;

for( i=0; i < document.anchors.length ; i++ )
{
if ( document.anchors[i].title == „***“ && !checkSingle( document.anchors[i].name ) )
{
rv = false;
}
}
return true
}

function doNothing()
{
}
–>

[HIER KLICKEN](javascript:machWas(‚LINK%201‘);alert(‚XXX‘):wink:
[HIER AUCH MAL KLICKEN](javascript:machWas(‚LINK%202‘);alert(‚yyy‘):wink:
[HIER IST KLICKEN Nicht notwendig](javascript:machWas(‚LINK%203‘);alert(’###’):wink:

[Prüfe 1. Link](javascript:doNothing())
[Alle Links prüfen](javascript:doNothing())

Habe es auch noch getestet :wink:

Gruß
Volkmar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Volkmar!

Danke schön!! Das funktioniert einwandfrei!
Ist es auch möglich, dass ein Formular nicht abgesendet werden soll, wenn der Link nicht geklickt ist?
Es wird zwar ein Alert gemacht, das sagt, dass der Link noch nicht geklickt wurde, aber das Formular wird trotz dessen abgesendet. Das soll nicht sein. Gibt es da einen Weg?

Danke
CHristoph

Hallo Christoph,

klar geht auch das:
Absenden mit Prüfung
In der Funktion „checkAll()“ kannst Du den Parameter „lnk“ aus der Parameterliste entfernen und MUSST beim letzten „return“ das „true“ durch die Variable „rv“ ersetzen.

Mit der Funktion „checkSingle“ sollte es gleich Funktionieren, da diese Funktion schon richtig „true“ bzw. „false“ zurück gibt. Also etwa so:
Absenden mit Prüfung

Gruß
Volkmar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Volkmar!

Das ist ja richtig geil - klappt wunderbar!
Besten Dank von mir!! Genau so, wie ich’s wollte :smile:

Gruß Christoph