Ich möchte alle meine Formulare mit HTML5 und dem Musterattribut validieren, aber wie immer ist nichts perfekt im Internet und ich brauche immer noch ein Backup, um die Benutzer zu fangen, die HTML5-freundliche Browser nicht verwenden.Imitiert man das Verhalten von HTML5-Musterattributen für Eingaben mit web2py?
Ich habe Probleme, genaue Darstellungen der regulären Ausdrücke im Handbuch zu finden, also wenn Sie wissen, würde ich etwas Hilfe schätzen. Ich habe den Code auf zwei Arten geschrieben, den HTML-Weg und den HTML-Hilfsweg (siehe unten) und der HTML5 funktioniert und validiert in modernen Browsern mit Ausnahme von IE wie erwartet, aber ich kann sie nicht in Python übersetzen.
Ein Beispiel, das Sie unten sehen werden, ist der Ausdruck pattern="[A-F0-9]{11}|[A-F0-9]{14}"
Dies erzwingt effektiv eine Eingabe nur Großbuchstaben von A-F und Zahlen 0-9 enthalten. Es stellt auch sicher, dass die Länge genau 11 Zeichen oder 14 ist. Wie würde ich das in web2py verwenden? IS_LENGTH scheint nur einen Bereich aus meinen Tests zu akzeptieren und bisher habe ich nur IS_ALPHANUMERIC
gefunden, um zu steuern, welche Zeichen akzeptiert werden.
Bitte beachten Sie das untenstehende Formular aus:
HTML:
<form id="activate_form" method="post" action="">
<label for="meid">MSIE/ESN <sup>*</sup></label>
<input name="meid" pattern="[A-Fa-f0-9]{11}|[A-Fa-f0-9]{14}" placeholder="MEID/ESN" required />
<br />
<label for="zip">Zip Code <sup>*</sup></label>
<input type="number" name="zip" pattern="{5}" placeholder="Zip Code" required />
<br />
<br />
<br /><br />
<input type="button" name="cancel" value="Cancel" onClick="history.go(-1);return true;" />
<input type="submit" name="submit" value="Activate" />
<p class="small"><sup>*</sup> denotes a required field.
</form>
HTML-Helfer:
form=FORM(LABEL('MEID/ESN ',(SPAN('*'))),INPUT(_name='meid',_pattern="[A-F0-9]{11}|[A-F0-9]{14}",_placeholder='MEID/ESN',_required='required',_title="The MEID/ESN number only contains 11 or 13 characters, the letters A-F, and the numbers 0-9.",requires=[IS_LENGTH(11|14),IS_NOT_EMPTY()], _onblur="this.checkValidity();"),BR(),LABEL('ZIP CODE ',(SPAN('*'))),INPUT(_name='zip',_type='number',_pattern="[0-9]{5}",_placeholder='Zip Code',_required='required',_title="We only required the five character zip code.",requires=IS_NOT_EMPTY()),BR(),BR(),BR(),BR(),INPUT(_type='button',_name='cancel',_value='Cancel',_onclick="history.go(-1);return true;"),INPUT(_type='submit',_name='submit',_value='Activate'),_method='post',_id='activate_form')
if form.accepts(request,session):
response.flash = 'Form accepted'
# redirect(URL('next'))
elif form.errors:
response.flash = 'Form has errors'
return dict(form=form)