2014-04-08 86 views
0

我有一个选择列表和2个单选按钮,用户将从中选择两个选项,并根据该选项显示该项目的成本。验证javascript中的单选按钮

    *Registration Category: 
        <select name="catg"> 
        <option>Select..</option> 
        <option>Student</option> 
        <option>Student at another institution</option> 
        <option>Staff</option> 
        <option>other</option> 

那是我的选择列表。

  Yes <input type="radio" name="slides" id="yes" onchange="payment()" /> 
      No <input type="radio" name="slides" id="no" onchange="payment()"/> 
      <br /> 

这些是我的单选按钮。

  <input type="text" size="10" name="cost" readonly/> 
      <br /> 

这就是文本框的成本将显示在美元。

    function payment(){ 
        var yes = document.getElementById('yes').checked; 
        var no = document.getElementById('no').checked; 
        var catg = formname.catg.selectedIndex; 
        var cost = formname.cost; 

        if(catg==1||catg==3 && (yes)) 
        { 
        cost.value = " 23"; 
        } 
        else if (catg==1||catg==3 && (no)) 
        { 
        cost.value = " Free"; 
        } 
        } 

因此,如果选择使用从单选按钮“学生”或选择列表“员工”和“是”,费用应该是$ 23我得到这个工作,但如果用户选择“学生”或“员工”,然后从单选按钮选择“否”,则成本应该更改为“免费”,而这种情况并未发生。

+0

else if语句中的语法错误。在那里提供一个条件。 – bhb

+0

对不起,我已经有一个,不小心忘了从我的代码中复制它。 @bhb。编辑。 – roro

+1

如果你在你的if内容中放置大括号,该怎么办? if((catg == 1 || catg == 3 &&(yes)))。 你应该在别的后面放一个if if(如果catg == 2 && yes = 1,会附加什么) – ssbb

回答

0

在你的条件。

我听说javascript中有一个技巧,它使得条件如果(a || b || c & d || e)为真,因为“a || b”为真,并且它不会检查其余的条件。

但是,如果没有其他人,你的问题仍然存在。检查你的问题或代码的评论。

2

工作的jsfiddle:demo

我说,你离开了几件事情。我在else之后忽略了if,之后您需要一个条件,与其他任何if语句相同。

var formname = document.getElementById('form'); 

payment = function() { 
     var yes = document.getElementById('yes').checked; 
     var no = document.getElementById('no').checked; 
     var catg = formname.catg.selectedIndex; 
     var cost = formname.cost; 
     if (catg == 1 || catg == 3 && (yes)) { 
      cost.value = " 23"; 
     } else { 
      cost.value = " Free"; 
     } 
} 

注:函数声明没有var(而不是像这样:function payment(),这是一样的,只要作用域去),因为在的jsfiddle范围内有窗户是没有的。在你的代码中,如果它在全局(窗口)范围内,你可以这样写。根据http://jsfiddle.net/WeyLJ/8/

if ((catg == 1 || catg == 3) && (yes)) 

你需要在你的||支架