函数返回true,即使应该返回false
P粉514458863
P粉514458863 2023-08-16 19:57:43
[React讨论组]

我正在使用NextJS创建一个客户端表单。我试图在表单的客户端上放置验证,并将其放在一个单独的函数中,但每次运行validateForm()函数时,它都会返回true,而不管输入如何。我觉得我在这里漏掉了一些愚蠢的东西,但我正在绞尽脑汁,却一无所获。以下是代码:

const [jobSubmission, setJobSubmission] = useState({});

   
    function handleChange (e){
        
            const jobInputName = e.target.name;
            const jobInputValue = e.target.value;
    
            const newJobSubmission = {
                ...jobSubmission, 
                [jobInputName]: jobInputValue,
            }

            console.log(newJobSubmission)
            setJobSubmission(newJobSubmission)
    }
    

    function validateForm (){
        console.log("Validation runnning")

        if(jobSubmission.jobCategory == `Please-Select` || jobSubmission.jobCategory === null){
            alert("Please make job category selection")
            return false
        }

        if (jobSubmission.salarRange !== null && jobSubmission.timeOfPayment === null){
            alert("Please select frequency of salary payment or remove salary range");
            return false
        }

        return true
    }

 

    function handleSubmission(){

        const isReady = validateForm()
        console.log(isReady)

        if (isReady === true){
        // Add UniqId
        const finalJobObject = {
            ...jobSubmission,
            jobId: uniqid()
        }

        sendJobToDB(finalJobObject)
        window.location = "/post-a-job/thank-you"
    } else{
        alert("Please fill in all required fields")
    }
        
    }

基本上,我想将验证检查放在单独的验证函数中,并在出现问题时实际返回false。

我已经尝试更改如何跟踪布尔值,但它始终返回true。

P粉514458863
P粉514458863

全部回复(1)
P粉682987577

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

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对象,并确保您正在检查的值符合预期。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号