Altersüberpüfung

Hallo, für den Verkauf von Alkoholika suche ich eine Möglichkeit, bei der Registrierung das Geburtsdatum zu überprüfen (Mindestalter 18 Jahre) oder zumindest das Alter über eine zusätzliche Checkbox bestätigen zu lassen. Gibt es hierzu evtl. ein fertiges Plugin, um nicht am Core herumbasteln zu müssen und damit zu riskieren, beim nächsten Update die Änderungen wieder zu überschreiben? Danke für jeden Tipp.

Geh doch hin, und schreib dir eine jQuery javascript datei in dein eigenes template. Die greift dann auf die document ready funktion. Und dann fängste das ganze ab und machst deine überprüfung: [quote] jQuery(function () { (’#registerbutton’).bind(‘click’,function(event){if($(’#register_personal_birthdate’).lenght!=0){ event.preventDefault(); dann hier deine funktion rein aktuelles datum - eingegebenes datum = 18 dann ok sonst fehler }}( });[/quote] bei ok machste dann ein document.forms[’#register’].submit()

1 „Gefällt mir“

Danke, nur reichen dafür meine Javascript-Kenntnisse bei weitem nicht aus. Ich wüsste nicht einmal, wohin das sollte… :-/

in deinen template ordner unter frontend/_resources/javascript/ dann kommt folgendes in deinem templateordner unter frontend/index/ in die datei header.tpl {extends file=‚frontend/index/header.tpl‘} {block name=„frontend_index_header_javascript_jquery“} {/block} deine javascriptdatei sieht so aus: [quote]jQuery(function () { (’#registerbutton’).bind(‚click‘,function(event){if(('#register\_personal\_birthdate').lenght!=0){ event.preventDefault(); var date1 = new Date(parseInt([color=blue]year[/color]), parseInt([color=blue]month[/color]), parseInt([color=blue]day[/color])); var check = new Date(); check.setFullYear(check.getFullYear() - 18); if((date1.getTime() - check.getTime() \< 0){ Fehlermedlung!!! }else( submit(); ) }}( }); [/quote] Die select box findest du unter register/personal\_fieldset.tpl du wirst denen wohl noch eindeutige ids verpassen müssen und oben dann die werte mit (’#deineEindeutigeID:selected’).val() auslesen (kommt dann dahin, wo grade blau steht year,month,day) gruß Tom

Vielen Dank :slight_smile: [quote=“troemmelt”] [quote]jQuery(function () { (’#registerbutton’).bind(‘click’,function(event){if(('#register\_personal\_birthdate').lenght!=0){ event.preventDefault(); var date1 = new Date(parseInt([color=blue]year[/color]), parseInt([color=blue]month[/color]), parseInt([color=blue]day[/color])); var check = new Date(); check.setFullYear(check.getFullYear() - 18); if((date1.getTime() - check.getTime() \< 0){ Fehlermedlung!!! }else( submit(); ) }}( }); [/quote] [/quote] Wie wird die Fehlermeldung denn ausgegeben [quote="troemmelt"]Die select box findest du unter register/personal\_fieldset.tpl du wirst denen wohl noch eindeutige ids verpassen müssen und oben dann die werte mit (’#deineEindeutigeID:selected’).val() auslesen (kommt dann dahin, wo grade blau steht year,month,day)[/quote] Also so? var date1 = new Date(parseInt($('#register\_personal\_birthyear:selected').val()), parseInt($('#register\_personal\_birthmonth:selected').val()), parseInt($('#register\_personal\_birthdate:selected').val())); Wenn ich kein Kundenkonto anlege, bekomme ich das Geburtsdatum allerdings erst gar nicht zu sehen. Die Angabe müsste außerdem Pflicht sein.

Also Fehler so: in das template error_message.tpl in register machst du unter dem {/if} folgendes hin:

Sie sind leider noch nicht volljährig!
dann schreibst du nach dem event.preventDefault() folgendes: ('#errorAge').hide(); und da wo ich deine Fehlermeldung hingeschrieben hab kommt folgendes hin: (’#errorAge’).show(); [quote]Also so? 1 var date1 = new Date(parseInt(('#register\_personal\_birthyear:selected').val()), parseInt((’#register_personal_birthmonth:selected’).val()), parseInt($(’#register_personal[/quote] Sieht gut aus, nur musst du dann im personal_field template noch jedem select auch das dann reinschreiben ungefähr so :

1 „Gefällt mir“

[quote=„troemmelt“]Also Fehler so: in das template error_message.tpl in register machst du unter dem {/if} folgendes hin:

Sie sind leider noch nicht volljährig!
[/quote] Über dem {/if} funktioniert es, sonst wird das immer angezeigt. [quote] dann schreibst du nach dem event.preventDefault() folgendes: ('#errorAge').hide(); und da wo ich deine Fehlermeldung hingeschrieben hab kommt folgendes hin: (’#errorAge’).show(); [/quote] Die Fehlermeldung wird angezeigt, egal welches Datum ausgewählt ist. Außerdem erscheint sie doppelt, sobald auch im unteren Bereich des Formulars ein Fehler ausgegeben wird.

mit dem doppelt erscheinen is klar woran das liegt. dass es standardmässig angezeigt wird, erschliesst sich mir nicht. schick mir mal sowohl deine javascript und dein personal_fieldset.tpl dann schau ich mir des schnell an.