Avatar billede starter Praktikant
24. januar 2013 - 07:01 Der er 8 kommentarer og
1 løsning

E-mail skal udfyldes

Hej eksperter

Jeg har ledt og ledt efter en guide i hvordan man kan lave et felt (mail) reguired i en formular. Det der er finten er, at feltet kun skal være required, hvis brugeren udfylder feltet navn.

Håber meget, at der er nogen som kan hjælpe mig, for jeg har HÅRDT brug for det! :-)
Avatar billede olebole Juniormester
24. januar 2013 - 18:23 #1
<ole>

Læg et link til den kode, du har

/mvh
</bole>
Avatar billede starter Praktikant
27. januar 2013 - 10:24 #2
Influenza har holdt mig afskåret fra omverdenen i flere dage... Beklager den lange svartid!

Jeg har egentlig ikke så meget - kun et helt alm. required script:

  if ( /^[\da-z\._\-]{1,50}@[\da-z\._\-]{1,50}\.[\da-z_]{1,3}$/.test(form.email.value) ) {
  } else {
      alert ("Udfyld korrekt e-mail");
      form.email.focus();
      return false;
  };

  if ( form.name.value.length > 0 ) {
  } else {
      alert ("Udfyld navn.");
      form.name.focus();
      return false;
  };

Jeg vil gerne, at mail er reguired, hvis navn er udfyldt og omvendt. Hvis ingen af dem er udfyldt tillades submit.
Avatar billede olsensweb.dk Ekspert
27. januar 2013 - 14:54 #3
prøv denne.
der submittes hvis ingen er udfyldt eller alle er udfyldt, kan optimeres

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    function ValidateForm(){
        var NameElm = document.getElementById('uname');       
        var EmailElm = document.getElementById('uemail');       
        var NameLng = NameElm.value.length
        var EmailLng = EmailElm.value.length;
        if(NameLng > 0 || EmailLng > 0){
            // her er mindst én af de 2 felter udfyldt
            // så skal de bare valideres
              if (!( /^[\da-z\._\-]{1,50}@[\da-z\._\-]{1,50}\.[\da-z_]{1,3}$/.test(EmailElm.value) )) {
                alert ("Udfyld korrekt e-mail");
                EmailElm.focus();
                return false;
              }
              if (NameLng <= 0 ){
                alert ("Udfyld navn.");
                NameElm.focus();
                return false;              
              }
              return true;             
        }
        else return true;       
    }
    </script>
</head>
<body>
<form method="post" action="#" onsubmit="return ValidateForm()">
<input type="text" name="uname" id="uname">
<input type="text" name="uemail" id="uemail">
<input type="submit" name="send">
</form>
</body>
</html>
Avatar billede starter Praktikant
27. januar 2013 - 15:30 #4
Imponerende! Gider du lægge et svar?
Tusind tak for hjælpen!
Avatar billede olsensweb.dk Ekspert
27. januar 2013 - 18:21 #5
får du her
Avatar billede arnbjerg Nybegynder
28. januar 2013 - 12:20 #6
Hej "ronols"

Jeg har fået et problem..., Jeg vil gerne lave en gruppe af 5 felter (et af dem er en rulleliste) required, hvis et af dem udfyldes, men jeg kan ikke finde ud af at tilføje dem til dit script.

Derudover vil jeg gerne tilføje flere "gupper" med samme antal felter og jeg troede egentlig bare, at jeg kunne gentage scriptet, men det kan jeg heller ikke få til at fungere... :-(

Kan du hjælpe mig?

Jeg har forsøgt på denne måde:

<script type="text/javascript">
    function ValidateForm(){
        var TitelElm = document.getElementById('titel');
        var NameElm = document.getElementById('name');
        var LastnameElm = document.getElementById('lastnamn');
        var PhoneElm = document.getElementById('phone');
        var EmailElm = document.getElementById('email');
        var TitelLng = TitelElm.value.length
        var NameLng = NameElm.value.length
        var LastnameLng = LastnameElm.value.length
        var PhoneLng = PhoneElm.value.length
        var EmailLng = EmailElm.value.length;
        if(TitelLng > 0 || NameLng > 0 || LastnameLng > 0 || PhoneLng > 0 || EmailLng > 0){
            // her er mindst én af de 2 felter udfyldt
            // så skal de bare valideres
              if (!( /^[\da-z\._\-]{1,50}@[\da-z\._\-]{1,50}\.[\da-z_]{1,3}$/.test(EmailElm.value) )) {
                alert ("Udfyld korrekt e-mail");
                EmailElm.focus();
                return false;
              }
              if (TitelnameLng <= 0 ){
                alert ("Udfyld titel.");
                TitelElm.focus();
                return false;
              }
              if (LastnameLng <= 0 ){
                alert ("Udfyld efternavn.");
                LastnameElm.focus();
                return false;
              }
              if (PhoneLng <= 0 ){
                alert ("Udfyld telefonnummer.");
                PhoneElm.focus();
                return false;
              }
              if (NameLng <= 0 ){
                alert ("Udfyld navn.");
                NameElm.focus();
                return false;
              }
              return true;
        }
        else return true;
    }
    </script>
Avatar billede olsensweb.dk Ekspert
28. januar 2013 - 16:31 #7
hvor har du variablen TitelnameLng defineret ??
if (TitelnameLng <= 0 ){
den hedder vist TitelLng, det hedder den de andre steder :)

>eg troede egentlig bare, at jeg kunne gentage scriptet,
det kan du også forudsat det kun er input felter du tilføjer og staver dine variable rigtigt :)

en rettet udgave ser sådan ud:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">   
    function ValidateForm(){
        var TitelElm = document.getElementById('titel');
        var NameElm = document.getElementById('name');
        var LastnameElm = document.getElementById('lastnamn');
        var PhoneElm = document.getElementById('phone');
        var EmailElm = document.getElementById('email');
       
        var TitelLng = TitelElm.value.length;
        var NameLng = NameElm.value.length;
        var LastnameLng = LastnameElm.value.length;
        var PhoneLng = PhoneElm.value.length;
        var EmailLng = EmailElm.value.length;
       
        if(TitelLng > 0 || NameLng > 0 || LastnameLng > 0 || PhoneLng > 0 || EmailLng > 0){
              if (!( /^[\da-z\._\-]{1,50}@[\da-z\._\-]{1,50}\.[\da-z_]{1,3}$/.test(EmailElm.value) )) {
                alert ("Udfyld korrekt e-mail");
                EmailElm.focus();
                return false;
              }
              if (NameLng <= 0 ){
                alert ("Udfyld navn.");
                NameElm.focus();
                return false;
              }
              if (TitelLng <= 0 ){
                alert ("Udfyld titel.");
                TitelElm.focus();
                return false;
              }
              if (LastnameLng <= 0 ){
                alert ("Udfyld efternavn.");
                LastnameElm.focus();
                return false;
              }
              if (PhoneLng <= 0 ){
                alert ("Udfyld telefonnummer.");
                PhoneElm.focus();
                return false;
              }

              return true;
        }
        else return true;
       
    }
    </script>
</head>
<body>
<form method="post" action="#" onsubmit="return ValidateForm()">
<input type="text" name="name" id="name" placeholder ="navn">
<input type="text" name="mail" id="email" placeholder ="mail">
<input type="text" name="lastnamn" id="lastnamn" placeholder ="efternavn">
<input type="text" name="phone" id="phone" placeholder ="tlf">
<input type="text" name="titel" id="titel" placeholder ="titel">
<input type="submit" name="send">
</form>
</body>
</html>
Avatar billede olsensweb.dk Ekspert
28. januar 2013 - 16:31 #8
>Jeg vil gerne lave en gruppe af 5 felter (et af dem er en rulleliste)
jeg har her lavet titel om til en scrool bar

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">   
    function ValidateForm(){
        // http://stackoverflow.com/questions/1085801/how-to-get-the-selected-value-of-dropdownlist-using-javascript
        var TitelElm = document.getElementById('titel');       
        // bruges ikke
        // var TitelElmValue = TitelElm.options[TitelElm.selectedIndex].value;
        // var TitelLng = TitelElm.options[TitelElm.selectedIndex].value.length;

        var NameElm = document.getElementById('name');
        var LastnameElm = document.getElementById('lastnamn');
        var PhoneElm = document.getElementById('phone');
        var EmailElm = document.getElementById('email');       
        var NameLng = NameElm.value.length;
        var LastnameLng = LastnameElm.value.length;
        var PhoneLng = PhoneElm.value.length;
        var EmailLng = EmailElm.value.length;
       
        if(TitelElm.selectedIndex > 0 || NameLng > 0 || LastnameLng > 0 || PhoneLng > 0 || EmailLng > 0){
              if (!( /^[\da-z\._\-]{1,50}@[\da-z\._\-]{1,50}\.[\da-z_]{1,3}$/.test(EmailElm.value) )) {
                alert ("Udfyld korrekt e-mail");
                EmailElm.focus();
                return false;
              }
              if (NameLng <= 0 ){
                alert ("Udfyld navn.");
                NameElm.focus();
                return false;
              }
              if (TitelElm.selectedIndex == 0 ){
                alert ("Udfyld titel.");
                TitelElm.focus();
                return false;
              }
              if (LastnameLng <= 0 ){
                alert ("Udfyld efternavn.");
                LastnameElm.focus();
                return false;
              }
              if (PhoneLng <= 0 ){
                alert ("Udfyld telefonnummer.");
                PhoneElm.focus();
                return false;
              }

              return true;
        }
        else return true;
       
    }
    </script>
</head>
<body>
<form method="get" action="#" onsubmit="return ValidateForm()">
<input type="text" name="name" id="name" placeholder ="navn">
<input type="text" name="mail" id="email" placeholder ="mail">
<input type="text" name="lastnamn" id="lastnamn" placeholder ="efternavn">
<input type="text" name="phone" id="phone" placeholder ="tlf">
<select name="titel" id="titel">
<option value="0">vælg venligst</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
<input type="submit" name="send">
</form>
</body>
</html>


du bør overveje at validere dit telefon nummer også, lige nu accepterer du både tal og bogstaver
vi havde den oppe at vende her http://www.eksperten.dk/spm/961320
Avatar billede starter Praktikant
29. januar 2013 - 07:09 #9
Uha, der er meget man skal holde øje med... Jeg har kigget og kigget og alligevel har jeg lavet en variabel forkert.  :-)

Endnu engang tusind tak for hjælpen, nu virker det helt perfekt!

Ha' en god dag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester