условно поданная форма в зависимости от состояния входов - PullRequest
0 голосов
/ 09 января 2020

Привет Всем спасибо за чтение этого!

Я создал функцию отправки дескриптора, которая работает в форме входа в систему. Я хочу, чтобы форма не могла быть отправлена ​​в зависимости от состояния входных данных, например, электронной почты, пароля, подтверждения пароля.

Ниже приведена краткая попытка, которая у меня была, но, похоже, она работает неправильно. ( Я знаю, что два нижних теперь закомментированы, но они не сработали независимо.)

Используя эту логику c, что было бы лучшим способом улучшить ее?

Ниже указан мой код.

handleSubmit(e) {
    e.preventDefault();
    try {
      if (
        !this.state.email < 8 //&&
        //!this.state.password < 8
        // this.state.password !== this.state.passwordConfirm
      ) {
        alert(`please enter the form correctly `);
      } else {

        const data = { email: this.state.email, password: this.state.password };

        fetch("/admin-Add-Users", {
          method: "POST", // or 'PUT'
          headers: {
            Accept: "application/json, text/plain, */*",
            "Content-Type": "application/json"
          },
          body: JSON.stringify(data)
        })
          .then(response => response.json())
          .then(data => {
            console.log("Success:", data);
          })
          .catch(error => {
            console.error("Error:", error);
          });
        alert(`Congradulations you have signed up`);
      }
    } catch (e) {
      console.log(e);
    }
  }

Ответы [ 2 ]

1 голос
/ 09 января 2020

Глядя на код, думаю, вы можете упростить условный запрос.

if (!(this.state.email < 8 && this.state.password < 8 && this.state.password == this.state.passwordConfirm)) {
    alert(`please enter the form correctly `);
} else {
    ...
}

Здесь мы говорим, чтобы быть действительными, мы проверяем, все ли реквизиты действительны. Переписано, может быть, немного приятнее:

checkValidity = ({email, password, passwordConfirm}) => { 
    return email < 8 
            && password < 8 
            && password == passwordConfirm
}


if (!checkValidity(this.state)) {
    alert(`please enter the form correctly `);
} else {
    ...
}
0 голосов
/ 10 января 2020

Я был дураком sh и фактические логики c, которые я имел для оператора if, были неверны. Это исправлено :)

if (
      this.state.email.length < 8 ||
      this.state.password.length < 8 ||
      !(this.state.password === this.state.passwordConfirm)
    ) {
      alert(`please enter the form correctly `);
      console.log(this.state.email);
      console.log(this.state.password);
    } else {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...