2013-08-16 94 views
2

应该为此需要一个非常简单的解决...使用Javascript - 如果“&&”(需要咨询)

我有我要被验证为空字段登记表和JavaScript的有回报分居条件一个简单的弹出式警报如果需要的话。这里是脚本代码:

<script type="text/javascript"> 
    function validateForm() { 
     var a = document.forms["registration_form"]["school"].value; 
     var b = document.forms["registration_form"]["name"].value; 
     var c = document.forms["registration_form"]["password"].value; 
     var d = document.forms["registration_form"]["field"].value; 
     var e = document.forms["registration_form"]["field_location"].value; 
     var f = document.forms["registration_form"]["volleyball_campus"].value; 
     var g = document.forms["registration_form"]["volleyball_location"].value; 
     var h = document.forms["registration_form"]["indoor"].value; 
     var i = document.forms["registration_form"]["outdoor_courts"].value; 
     var j = document.forms["registration_form"]["blackout"].value; 
     var k = document.forms["registration_form"]["blackout_dates"].value; 
     if (a == "" || b == "") { 
      alert("Please make sure to enter your name and school."); 
      return false; 
     } else if (c != "pal") { 
      alert("Sorry, your password is invalid."); 
      return false; 
     } else if (d == "no" && e == "") { 
      alert("Please make sure to enter where you will play football."); 
      return false; 
     } else if (f == "no" && g == "") { 
      alert("Please make sure to enter where you will play volleyball."); 
      return false; 
     } else if (h == "no" && i == "0") { 
      alert("Please make sure to select how many outdoor volleyball courts you will use."); 
      return false; 
     } else if (j == "yes" && k == "") { 
      alert("Please make sure to enter your blackout dates."); 
      return false; 
     } 
    } 
</script> 

一切工作正常的变量a,b和c。然而,其他情况下,如果以变量d & & e开始的条件似乎不执行。我认为我必须在这个措辞上做错了什么,但我无法弄清楚它是什么。

我已经设置了我的服务器端PHP脚本来做同样的事情,它没有任何问题。你可以在这里看到:

//Validate the form: 
if ($_POST['school'] == "" || $_POST['name'] == "") { 
    echo "Please make sure to enter your name and school."; 
} elseif ($_POST['password'] != "pal") { 
    echo "Sorry, your password is invalid."; 
} elseif ($_POST['field'] == "no" && $_POST['field_location'] == "") { 
    echo "Please make sure to enter where you will play football."; 
} elseif ($_POST['volleyball_campus'] == "no" && $_POST['volleyball_location'] == "") { 
    echo "Please make sure to enter where you will play volleyball."; 
} elseif ($_POST['indoor'] == "no" && $_POST['outdoor_courts'] == "0") { 
    echo "Please make sure to select how many outdoor volleyball courts you will use."; 
} elseif ($_POST['blackout'] == "yes" && $_POST['blackout_dates'] == "") { 
    echo "Please make sure to enter your blackout dates."; 
} else { 

这捕获的一切,我想要的方式,但客户端JavaScript验证(这是我第一次只运行了更加人性化的外观)似乎并没有过去的第一工作三个变量。

我不能为我的生活找出原因。我在互联网上搜索过,但无法找到我正在寻找的答案。任何帮助将非常感激!

P.S.该页面本身位于http://www.712jefferson.org/pal/registration.html,如果这有助于澄清预期的过程。

+0

无线电按钮不会D和E中都有值?任何控制台错误? – Krishna

+0

你怎么知道他们错了?你确定知道变量的值是什么? – Pointy

+3

谁用这种方式命名变量?啧。 – Mathletics

回答

2

只有在d等于noe为空时,警报才会显示。这同样适用于fg。这没有意义。就拿这个例子:

我玩volleyball但在校园里,所以我在f进入no不玩了,你的逻辑希望我把一个空字符串在你真正想要用户输入排球位置g

这应改为:

else if (f == "no" && g != "") { 

} 

通知从==!=的变化,这意味着g不等于空字符串。同样适用于de(如果d设置为“no”,则不希望e为空)。

同时验证您的密码客户端是有风险的,我希望你有服务器端验证。

+0

谢谢您的回复。我实际上确实按照它的写法来表达这个陈述。以下是更多视角的网页网址:712jefferson.org/pal/registration.html。同意客户端密码验证的风险。这是非常短暂的。 – 712Jefferson

0

如果后续条件没有评估,可能是因为之前的条件之一已经被评估并且已经被满足并且被返回。如果要确认所有的条件都被评估,你可以删除return语句并添加的console.log()消息,每个条件输出条件的真/假状态,

0

试试这个:

else if (registration_form.field[1].checked == true && e == "") { 
    alert("Please make sure to enter where you will play football."); 
    return false; 
    } 

,并作为任一项活性

<input type="radio" name="field" checked="checked" value="yes"> 
<input type="radio" name="field" value="no"> 
+0

谢谢你的建议,但我不想默认其中一个单选按钮,除非他们已经指定他们确实会有一个足球队。 – 712Jefferson

+0

如果你想让你离开,那这个是可选的 – Siva