Ich versuche zu verhindern, dass bestimmte Benutzer-IDs von E-Mails Formular, wie eine Blacklist, zum Beispiel verweigert [email protected] und Take verweigert user1 und wenn der Benutzer das Formular sendet, dann erscheint ein Bootstrap-Alarm sagt etwas ist falsch, das Problem ist, dass, wenn Sie auf die Schaltfläche erneut klicken das Formular ohne erneute Validierung eingereicht wird, wenn ich den Teil entfernen wo Stile angewendet werden und eine Warnung verwenden, dann funktioniert es hier ist der Code bin Verwendung:Javascript: Formular reicht nach der ersten Validierung und nach dem Anwenden von Stilen
Für die Form:
<form id="contact" method="post" class="form" role="form" onsubmit="return validate()" action="m41lS3nd.php">
der Validierungscode:
function validate(){
e.preventDefault;
var rejectList = [ "denied1" , "denied2" ]; //List of Blacklisted emails or domains
var emailValue = $('#email').val(); // To Get Value (can use getElementById)
var splitArray = emailValue.split('@'); // To Get Array
if(rejectList.indexOf(splitArray[0]) >= 0) //Check if contains any unwanted emails
{
// Means it has the rejected domains
document.getElementById("notification").style.display = "block"; //If unwanted emails are detected will show an alert
document.getElementById("notification").style.marginTop = "5px";
return false;
}else
var contactform = document.getElementById("contact"); //If good email is entered then get the form name and submits the form
contactform.submit();
return true;
}
Der Bootstrap-Alarm:
<!--Notification for invalid emails such as spam or unsolicited emails-->
<div id="notification" class="alert alert-warning alert-dismissible fade in" role="alert" style="display: none;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Oops!</strong>There is something wrong with your email, your reference code is: BL1SE.
</div>
Der Absenden Button:
<button class="btn btn btn-md" type="submit">Send Message <i class="fa fa-paper-plane fa-1x" style="color: white;"></i></button>
ich den Code nahm und von diesem Posten angepasst, kann aber nicht kommentieren oder Anbieter kontaktieren und wissen nicht, was mache ich falsch: Code for validation
Ich habe versucht, dies zu tun, aber dann überspringt die Validierung und reicht das Formular direkt ein, ohne die Validierung durchzuführen. Ich habe e.preventDefault hinzugefügt; wie folgt: 'function validate() { \t e.preventDefault; var rejectList = ["verweigerte1", "verweigerte2"]; ...} ' –
Bitte verlassen Sie sich niemals auf die clientseitige Validierung. (d. h. Javascript ..). http-Formular-Übermittlungen können gefälscht werden und umgehen jede js-Validierung, die Sie tun. Es ist gut für UX, aber das war's. – Alfie
In dem Fall, wenn die Validierung gut ist, reicht es aus, nur "true" zurück zu geben, da dies das Senden des Formulars auslöst, andernfalls tust du es zweimal. Und ja, entfernen Sie die 'e.preventDefault()' & fügen Sie die richtige 'else' Klammer. –