Hai Semua terima kasih telah membaca ini!

Saya telah membuat fungsi pengiriman pegangan yang berfungsi pada formulir masuk. Saya ingin formulir tidak dapat dikirim tergantung pada keadaan input, misalnya email, kata sandi, konfirmasi kata sandi.

Di bawah ini menampilkan upaya singkat yang saya lakukan tetapi ini tampaknya tidak berfungsi dengan benar. (Saya tahu dua terbawah sekarang dikomentari tetapi tidak berhasil.)

Menggunakan logika ini, apa cara terbaik untuk menerapkannya?

Di bawah ini adalah kode saya yang dimaksud.

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);
    }
  }
0
coderStew 9 Januari 2020, 15:58

2 jawaban

Jawaban Terbaik

Melihat kodenya, saya pikir Anda dapat menyederhanakan kueri bersyarat.

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

Di sini kami mengatakan, agar valid, kami memeriksa semua alat peraga valid. Ditulis ulang mungkin sedikit lebih bagus adalah:

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


if (!checkValidity(this.state)) {
    alert(`please enter the form correctly `);
} else {
    ...
}
1
Adam Turner 9 Januari 2020, 13:24

Saya menjadi bodoh dan logika sebenarnya yang saya miliki untuk pernyataan if tidak benar. Ini memperbaikinya :)

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 {
0
coderStew 10 Januari 2020, 09:15