在javascript中验证单选按钮

时间:2014-04-08 07:33:21

标签: javascript html forms onchange

我有一个选择列表和2个单选按钮,用户可以从中选择2个选项,根据这些选项,将显示该项目的成本。

                  *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";
                  }
                  }

因此,如果用户选择“学生”,或者&#39;员工&#39;从选择列表和&#39;是&#39;从单选按钮,成本应为23美元。我得到了它的工作,但如果用户选择&#39;学生&#39;或者&#39;员工&#39;然后&#39;不&#39;从单选按钮,费用应改为“免费”,这不会发生。

2 个答案:

答案 0 :(得分:2)

工作jsfiddle:demo

我添加了一些你遗漏的东西。我在if之后遗漏了else,之后您需要一个条件,与任何其他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中,范围没有窗口。在您的代码中,如果它在全局(窗口)范围内,您可以像这样编写它。

答案 1 :(得分:0)

根据http://jsfiddle.net/WeyLJ/8/

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

你需要围绕你的||在你的if条件下。

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

但是如果没有别的话,你的其他人仍会有问题。检查您的问题或代码的评论。