2013-02-21 39 views
0

我遇到了这个函数的问题,第一部分被称为罚款,但在第一个if语句之后没有其他任何东西被调用。我已经使用JSfiddle,但它不能确定一个严重的问题。Javascript函数的第一部分被称为

我通常使用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; 
       } 
      } 

     } 




     } 
+0

你从第一个返回false if – 2013-02-21 13:45:14

+0

NITPICK:使用else if! – epascarello 2013-02-21 13:45:27

+0

你究竟在用这段代码实现什么? – Manuel 2013-02-21 13:47:01

回答

0

如果strQtype只能是你正在测试的3个值之一,那么有没有办法可以永远得到你的代码,因为你总是从每个那些if语句返回的第二部分。

编辑:

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

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

+0

感谢您的回答,但这种方法的问题是必须始终选择三个菜单。有一个菜单可以选择想要制作什么类型的问题,一个菜单可以选择要制作的答案类型,以及一个菜单来选择你做出多少答案。 – user1953507 2013-02-21 14:06:15

+1

那么如果是这样的话,那么它回到了我原来的观点,即你从那些你永远不会超过他们的前3个if语句中返回**。您需要保存他们为第一个菜单选择的答案,即他们想要制作什么类型的问题,然后继续前进,以便查看他们想要的答案类型。 – knoight 2013-02-21 14:08:55

+0

看到我的编辑澄清。 – knoight 2013-02-21 14:22:36

相关问题