只调用Javascript函数的第一部分

时间:2013-02-21 13:43:40

标签: javascript if-statement syntax

我遇到了这个函数的问题,第一部分被称为罚款,但在第一个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;
                }
            }

        }   




        }

1 个答案:

答案 0 :(得分:0)

如果strQtype只能是您正在测试的3个值中的一个,那么您无法访问代码的第二部分,因为您总是从每个if返回声明。

编辑:

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

或者您可以随时只编写3个不同的功能,一个用于测试每个菜单项,这是我可能会做的。