So habe ich ein html5 erforderliches Eingabefeld, das gut funktioniert, wenn ich die folgende jQuery Bestätigungsnachfrage auslassen ...HTML5 Validierung funktioniert nicht, wenn jQuery
$(".acal-confirm").click(function(){
if($(this).val() == 'delete'){
if (!confirm("Delete all positions for this day?")){
return false;
}
}
if($(this).val() == 'publish'){
if (!confirm("Publish all positions for this day?")){
return false;
}
}
if($(this).val() == 'draft'){
if (!confirm("Save all positions for this day as a draft?")){
return false;
}
}
});
... Als ich bin es die Bestätigung Warnung angezeigt wie erwartet, aber wenn das Eingabefeld leer ist, wird die HTML5-Validierung nicht mehr ausgelöst.
Die html es verknüpft ist (die in einem Formular-Tag eingewickelt wird) ...
<button name="submit" type="submit" value="draft" class="btn btn-primary btn-lg acal-confirm" title="Do not make available publically">Save draft</button>
<button name="submit" type="submit" value="publish" style="margin-left:10px;" class="btn btn-primary btn-lg acal-confirm" title="Save and publish the positions publically">Publish</button>
<button name="submit" type="submit" value="delete" style="margin-left:10px;" class="btn btn-primary btn-lg acal-confirm" title="Delete the positions for this day">Delete day</button>
Was dies geschehen verursacht? Vielen Dank.
'return false' bricht die Standardaktion, das ist HTML5-Validierung. Verwenden Sie stattdessen das 'onsubmit'-Ereignis, und Sie brauchen kein' return false', wenn Sie die HTML-Validierung verwenden. Das Formular wird niemals ohne Javascript gesendet, wenn die erforderlichen Felder nicht ausgefüllt sind. –
Ok, danke. Ich habe es schließlich in eine jQuery-Submit-Funktion gestellt, was auch ein Vorübersetzungs-Event ist, denke ich. Der Bestätigungsaufruf sollte das fehlende Feld nicht bestätigen, sondern die Aktion des Benutzers bei erfolgreicher Validierung bestätigen. Ich hoffe, das hast du gemeint. Das 'return false' bricht dann das Senden ab, wenn der Benutzer seine Meinung ändert. – user126440
Oh, ich habe es auch geschafft 'if ($ (': focus'). Val() == 'delete') { return confirm (" Alle Positionen für diesen Tag löschen? "); } 'um prägnanter zu sein. – user126440