Die Funktion gibt „true' zurück, obwohl sie „false' zurückgeben sollte
P粉514458863
2023-08-16 19:57:43
<p>Ich verwende NextJS, um ein clientseitiges Formular zu erstellen. Ich versuche, die Validierung auf der Clientseite des Formulars zu platzieren und sie in eine separate Funktion einzufügen, aber jedes Mal, wenn ich die Funktion „validateForm()“ ausführe, gibt sie unabhängig von der Eingabe „true“ zurück. Ich habe das Gefühl, dass mir hier etwas Dummes entgeht, aber ich zerbreche mir den Kopf und komme nicht weiter. Hier ist der Code: </p>
<pre class="brush:php;toolbar:false;">const [jobSubmission, setJobSubmission] = useState({});
Funktion handleChange (e){
const jobInputName = e.target.name;
const jobInputValue = e.target.value;
const newJobSubmission = {
...JobEinreichung,
[jobInputName]: jobInputValue,
}
console.log(newJobSubmission)
setJobSubmission(newJobSubmission)
}
Funktion validierenForm (){
console.log("Validierung läuft")
if(jobSubmission.jobCategory == `Please-Select` || jobSubmission.jobCategory === null){
Alert("Bitte treffen Sie eine Jobkategorieauswahl")
falsch zurückgeben
}
if (jobSubmission.salarRange !== null && jobSubmission.timeOfPayment === null){
Alert("Bitte wählen Sie die Häufigkeit der Gehaltszahlung aus oder entfernen Sie die Gehaltsspanne");
falsch zurückgeben
}
Rückkehr wahr
}
Funktion handleSubmission(){
const isReady = validierenForm()
console.log(isReady)
if (isReady === true){
// UniqId hinzufügen
const finalJobObject = {
...JobEinreichung,
jobId: uniqid()
}
sendJobToDB(finalJobObject)
window.location = "/post-a-job/thank-you"
} anders{
Alert("Bitte füllen Sie alle erforderlichen Felder aus")
}
}</pre>
<p>Grundsätzlich möchte ich die Validierungsprüfung in eine separate Validierungsfunktion einfügen und tatsächlich false zurückgeben, wenn etwas schief geht. </p>
<p>Ich habe versucht zu ändern, wie der boolesche Wert verfolgt wird, aber er gibt immer true zurück. </p>
可能是由于使用了
==
和===
的混合使用导致的。我建议首先尝试以下代码:如果仍然存在问题,我建议在控制台日志中检查jobSubmission对象,并确保您正在检查的值符合预期。