我有一个选择列表和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;从单选按钮,费用应改为“免费”,这不会发生。
答案 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”为真,它不会检查其余部分条件。
但是如果没有别的话,你的其他人仍会有问题。检查您的问题或代码的评论。