Javascript: hoe focus op een element brengen en een waarschuwingsbericht weergeven

Voorwoord, ik ken JavaScript helemaal niet.

Ik probeer het e-mailadres van een formulier te valideren. Als de validatie mislukt, wil ik me concentreren op het ongeldige e-mailveld en een waarschuwingsbericht weergeven. De onderstaande code retourneert correct true of false als de regel "focusElement" is verwijderd. Het retourneert echter altijd true met die regel (waarschijnlijk omdat de regel ongeldig is en de code niet wordt uitgevoerd.) Bestaat er een juiste/eenvoudige manier om op dit element te focussen en het bericht weer te geven?

function validateForm(formElement) 
  {
    var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
    if(emailPattern.test(formElement.tfEmail.value))
    {
        return true;
    }
    else
    {
        focusElement(formElement.tfEmail,'Please enter a valid e-mail address.');
        return false;
    }
  }
1
Probeer geen e-mailadres met een reguliere expressie te valideren. Zie dit bericht: stackoverflow.com/questions/201323/… Zorg er in ieder geval voor dat uw expressie het plus-teken toestaat. Gebruik zoiets als dit: /[email protected]// .
toegevoegd de auteur gilly3, de bron
Als je JavaScript niet echt kent, stel je Google jQuery voor, en het maakt alles veel, veel meer vrolijk
toegevoegd de auteur Brian Leishman, de bron
Probeer return false; aan het einde van uw focusElement() -functie. Controleer anders uw Javascript op syntaxisfouten, want als uw validatiefunctie fout is voordat u false retourneert, wordt het formulier verzonden alsof het true is.
toegevoegd de auteur Aaron, de bron
... of /.*/ s (grapje natuurlijk. @ gilly3 vind je niet dat dat een beetje breed is voor e-mailvalidatie?)
toegevoegd de auteur Aaron, de bron

4 antwoord

Use .focus() and alert()

...
else
{
    alert('Please enter a valid e-mail address.');
    formElement.tfEmail.focus();
    return false;
}

Als u wilt dat de functionaliteit in een afzonderlijke functie zoals uw voorbeeld staat:

...
else
{
    focusElement(formElement.tfEmail, 'Please enter a valid e-mail address.');
    return false;
}

function focusElement(obj, msg)
{
    alert(msg);
    obj.focus();
}
2
toegevoegd

Je moet proberen om jQuery en jQuery Validate te gebruiken voor deze taak.

jQuery is the most used JavaScript framework, it can simplify a lot of any tasks in JavaScript.

jQuery Validate is a very used plugin for validation, based on jQuery.

1
toegevoegd

Proberen:

alert("Ur err msg");
document.getElementById("yourEmailFieldId").focus();
1
toegevoegd
function focusElement(el, message) {
    alert(message);
    el.focus();
}
1
toegevoegd
alle antwoorden zijn goed en nuttig. koos deze als eerste
toegevoegd de auteur ab11, de bron
@ ab11, Waarom kiest u niet op basis van inhoud, moeite, documentatie en links/aanvullende informatie?
toegevoegd de auteur James Hill, de bron
@ ab11, ik ben helemaal niet beledigd! Ik had mijn opmerking beter moeten formuleren. Ik probeerde erop te wijzen dat het kiezen van een antwoord omdat het de eerste keer is, geen goede manier is om een ​​antwoord te kiezen - vooral voor degenen die deze vraag later bezoeken in een poging hun probleem op te lossen. Het antwoord dat u kiest heeft geen verklaring - het is gewoon code. Mijn antwoord heeft twee links naar MDN, zodat je de functies die je gebruikt kunt begrijpen, evenals tekst die ze een beetje uitlegt. Ik ben niet op zoek naar rep, probeer gewoon te helpen. markeer alsjeblieft niet de mijne als het antwoord . Overweeg gewoon wat ik zeg voor toekomstige vragen.
toegevoegd de auteur James Hill, de bron