suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die Funktion gibt „true“ zurück, obwohl sie „false“ zurückgeben sollte

<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>
P粉514458863P粉514458863499 Tage vor539

Antworte allen(1)Ich werde antworten

  • P粉682987577

    P粉6829875772023-08-17 10:50:37

    可能是由于使用了=====的混合使用导致的。我建议首先尝试以下代码:

    function validateForm() {
        console.log("Validation running");
    
        if (jobSubmission.jobCategory === 'Please-Select' || jobSubmission.jobCategory === undefined) {
            alert("Please make a job category selection");
            return false;
        }
    
        if (jobSubmission.salaryRange !== null && jobSubmission.timeOfPayment === undefined) {
            alert("Please select the frequency of salary payment or remove the salary range");
            return false;
        }
    
        return true;
    }
    

    如果仍然存在问题,我建议在控制台日志中检查jobSubmission对象,并确保您正在检查的值符合预期。

    Antwort
    0
  • StornierenAntwort