0

我所做的这个函数有问题,第一部分调用得很好,但在第一个 if 语句之后没有调用其他任何东西。我用过 JSfiddle,但它并没有发现一个严重的问题。

我通常使用 PHP 而不是 JS,所以我想知道这里是否缺少一些简单的东西?

function validatequestion(form){
        var e = document.getElementById("chooseqtype");
        var strQtype = e.options[e.selectedIndex].value;

        if(strQtype == "default"){
            alert("Please select a question type");
            return false;
        }

        if(strQtype == "textquestion"){
            fail = validatetextq(form.textquestiondesc.value)
            if(fail == "") return true
            else {
                alert(fail);
                return false;
            }
        }

        if(strQtype == "videoquestion"){
            fail = validatevideoq(form.videoquestiondesc.value)
            if(fail == "") return true;
            else {
                alert(fail);
                return false;
            }
        }

        //everything above works, after this point nothing seems to get called
        var a = document.getElementById("chooseatype");
        var strAtype = a.options[a.selectedIndex].value;

        if(strAtype == "textanswer"){
            //get the value of the number of text answers select box
            var t = document.getElementById("choosetextnumber");
            //put the value in variable strQtype
            var strTextno = t.options[t.selectedIndex].value;


            if(strTextno == "2tanswers"){
                fail = validatetexta1(form.textanswer1.value)
                fail += validatetexta2(form.textanswer2.value)
                if(fail == "") return true;
                else {
                    alert(fail);
                    return false;
                }
            }

        }   




        }
4

1 回答 1

0

如果strQtype只能是您正在测试的 3 个值之一,那么您将无法进入代码的第二部分,因为您总是从每个if语句中返回。

编辑:

你需要做的不是 return什么时候fail == ""。由于您只是返回true,我假设您不需要返回值,只需验证验证是否成功。你应该做的只是测试失败,例如if (! fail=="" ) (语法可能是错误的,javascript 不是我的第一个语言。)在这种情况下,做你的alert.

或者你总是可以只写 3 个不同的函数,一个来测试每个菜单项,这就是我可能会做的。

于 2013-02-21T13:59:06.973 回答