2

I need to change the alert (Please fill out this field) in React.

Example:

A Form component and an Input component.

PD: I am able to do it in a simple HTML with JS, but I just can't get it working with React

PD2: I know I can use the stated to validate and throw custom error messages, but I just have to do it using the required alert promp

2
  • 1
    Could you please post some code? Commented Aug 31, 2018 at 22:17
  • Can you please share your attempts with JS and HTML? Also, have you tried this Commented Aug 31, 2018 at 22:18

4 Answers 4

5

You can apply this piece of code inside the component of the input that you want to change the alert:

htmlInput.oninvalid = function(e) {
    e.target.setCustomValidity("Here is your text!");
};

Also here is an example of use in a component:

componentDidMount(){
    var htmlInput = document.getElementById("id");
    htmlInput.oninvalid = function(e) {
        e.target.setCustomValidity("This can't be left blank!");
    };
}
Sign up to request clarification or add additional context in comments.

1 Comment

If the inputs are empty, you get stuck in validation. It is necessary to clean them after the oninvalid: htmlInput.oninput = function(e) { e.target.setCustomValidity(' '); };
5
i managed to solve this like this
onInvalid={F => F.target.setCustomValidity('Enter User Name Here')} 
onInput={F => F.target.setCustomValidity('')} 

1 Comment

Please add external resources (e.g. official docs) to prove the validity of your answer.
3

As for me (while using React), e.target had only 3 methods addEventListener, dispatchEvent, and removeEventListener. So the solution was to use currentTarget

Solution:

<input

  onInvalid={(e) =>
    e.currentTarget.setCustomValidity('CUSTOM MESSAGE')
  }

  onInput={(e) => e.currentTarget.setCustomValidity('')}

  />

Hope this helps!

Comments

0

None of these answeres helped me, this is easiest way Just add this in your props ex:

  onInvalid={e => e.target.setCustomValidity("Code is required")}

4 Comments

this line as well onInput={e => e.target.setCustomValidity("")}
Please provide an explanation to your code - it is very hard to understand something when it isn't explained.
Hello! just add that line in your input element for example to have the custom message
No, I mean edit it with an explanation.

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.