Reputation: 15
I wrote this simple form validation script for the school, but the function which checks the e-mail, called absender()
, doesn't work, and I don't get why. The other two functions, which are validating the names do work. I literally trying for days and hours now, any help is much appreciated.
window.onload = function() {
'use:strict';
var nachName = document.getElementById('Nachname');
nachName.addEventListener('blur', nName);
var vorName = document.getElementById('Vorname');
vorName.addEventListener('blur', vName);
var absender = document.getElementById('Absender');
absender.addEventListener('blur', absender);
function nName() {
var re = /^[A-Za-z]+$/;
if (re.test(document.Formular.Nachname.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
function vName() {
var re = /^[A-Za-z]+$/;
if (re.test(document.Formular.Vorname.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
function absender() {
var at = /\S+@\S+\.\S+/;
if (at.test(document.Formular.Absender.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
}
<form name="Formular">
<p id="formuText"></p>
<fieldset name="fieldset">
<legend>Persönliche Daten</legend>
<p id="formText"></p>
<label for="Nachname">Nachname</label>
<input type="text" id="Nachname" placeholder="Mustermann" name="Nachname">
<label for="Vorname">Vorname</label>
<input type="text" id="Vorname" placeholder="Max" name="Vorname">
<label for="absender">E-Mail:</label>
<input type="text" id="Absender" name="Absender" placeholder="[email protected]">
</fieldset>
</form>
Upvotes: 1
Views: 36
Reputation: 178285
You call the var the same as the function and wipe it.
var abs = document.getElementById('Absender');
abs.addEventListener('blur', absender);
fixed that
Also your label for needs to point at the Absender
window.onload = function() {
'use:strict';
var nachName = document.getElementById('Nachname');
nachName.addEventListener('blur', nName);
var vorName = document.getElementById('Vorname');
vorName.addEventListener('blur', vName);
var abs = document.getElementById('Absender');
abs.addEventListener('blur', absender);
function nName() {
var re = /^[A-Za-z]+$/;
if (re.test(this.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
function vName() {
var re = /^[A-Za-z]+$/;
if (re.test(this.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
function absender() {
var at = /\S+@\S+\.\S+/;
if (at.test(this.value)) {
document.getElementById("formuText").innerHTML = "";
} else {
document.getElementById("formuText").innerHTML = "Fehlerhafte Eingabe!";
}
}
}
<form name="Formular">
<p id="formuText"></p>
<fieldset name="fieldset">
<legend>Persönliche Daten</legend>
<p id="formText"></p>
<label for="Nachname">Nachname</label>
<input type="text" id="Nachname" placeholder="Mustermann" name="Nachname">
<label for="Vorname">Vorname</label>
<input type="text" id="Vorname" placeholder="Max" name="Vorname">
<label for="Absender">E-Mail:</label>
<input type="text" id="Absender" name="Absender" placeholder="[email protected]">
</fieldset>
</form>
Upvotes: 0
Reputation: 135792
Your element variable and validation function have the same name.
...
var absender = document.getElementById('Absender'); // <-- this variable
absender.addEventListener('blur', absender);
...
function absender() { // <-- has the same name of this function
var at = /\S+@\S+\.\S+/;
...
They can't have the same name. Roughly, they "occupy the same namespace".
To fix, rename either the function or the element:
var absenderElement = document.getElementById('Absender'); // notice the variable rename
absenderElement.addEventListener('blur', absender);
In the example above, the variable was renamed from absender
to absenderElement
, so the function can keep the name absender()
.
Upvotes: 2