Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2021, 21:04   #1
countryman
Новичок
Джуниор
 
Регистрация: 30.12.2016
Сообщений: 1
По умолчанию Нужно добавить валидацию формы ReactJS

Помогите пожалуйста доделать форму.
необходима проверка на введённые символы, например (if (e.target.value.length < 3 || e.target.value.length > 20))
В форме есть реагирующий button, что бы тоже срабатывал под это условие. И если можно также прикрутить стили для input под эти же условия.

Код:
interface ILoginForm {
  Login: (inputValue: { name: string; password: string }) => void;
  error: string;
}

const MoleculesLoginForm: React.FC<ILoginForm> = ({ Login, error }) => {
  const [inputValue, setInputValue] = useState({ name: "", password: "" });
  const [formValid, setFormValid] = useState(true);

  const validate = ({ name, password }) => {

    // проверка валидности
    const nameIsValid = name;
    const passIsValid = password;

    const isCredentialsValid = nameIsValid && passIsValid;
    if (isCredentialsValid !== formValid) setFormValid(isCredentialsValid);
  };

  const submitHandler = (e: FormEvent<HTMLFormElement>) => {
    e.preventDefault();

    Login(inputValue);
  };

  const changeHandler = ({ currentTarget }: FormEvent<HTMLInputElement>) => {
    const { value, name } = currentTarget;
    setInputValue((prev) => {
      const formValues = { ...prev, [name]: value };
      validate(formValues);
      return formValues;
    });
  };

  return (
    <div className="block__login">
      <form onSubmit={submitHandler}>
        <div>
          {error !== "" ? <div>{error}</div> : ""}
          <div>
            <p>User name</p>
            <input
              className="block__login block__login__name"
              type="text"
              name="name"
              id="name"
              placeholder="Input user name"
              onChange={changeHandler}
              value={inputValue.name}
            />
          </div>
          <div>
            <p>Password</p>
            <input
              className="block__login block__login__pass"
              type="password"
              name="password"
              id="password"
              placeholder="Input password"
              onChange={changeHandler}
              value={inputValue.password}
            />
          </div>
          <button
            className="block__login block__login__btn"
            disabled={!formValid}
            type="submit"
          >
            Log In
          </button>
        </div>
      </form>
    </div>
  );
};
countryman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить панель в Caption формы Dux Компоненты Delphi 13 20.01.2016 18:58
Почему html документ не проходит валидацию Yudzhan Помощь студентам 8 21.09.2013 23:20
добавить запись в таблицу из формы Aleksandraaa Microsoft Office Access 1 29.06.2013 16:51
Добавить кнопку в заголовок формы Miller-1981 Общие вопросы C/C++ 1 10.11.2010 22:10