1

my problem is that I have empty input value after submitting a form. I have no errors and I have no idea what is wrong.

Thanks!

const myForm = document.getElementById("myForm");
const myName = document.getElementById("myName").value;
const myEmail = document.getElementById("email").value;
const myMessage = document.getElementById("message").value;

myForm.addEventListener( "submit", async (e) => {
    e.preventDefault();

    console.log( myName );
    console.log( myEmail );
    console.log( myMessage );
})
<form id="myForm" name="myForm">
            
            <label for="myName">Name:</label>
            <input id="myName" name="myName" type="text" >

            <label>E-mail:</label>
            <input id="email" name="email" type="email" >

            <label>Message:</label>
            <textarea id="message" name="message" type="text" ></textarea>

            <button id="form-button" type="submit">Send</button>
       
</form>
 
    
    <script src="./mail-post.js"></script>
1
  • 4
    You get values before submit event - on start of page, that's why it's empty Commented Aug 18, 2020 at 10:19

1 Answer 1

3

The values are out of scope, try putting then inside the submit event, like this

const myForm = document.getElementById("myForm");

myForm.addEventListener( "submit", async (e) => {
    e.preventDefault();

   const myName = document.getElementById("myName").value;
   const myEmail = document.getElementById("email").value;
   const myMessage = document.getElementById("message").value;

    console.log( myName );
    console.log( myEmail );
    console.log( myMessage );
})
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.