在带有onchange
事件的HTML中,我试图将下拉列表与特定元素数组进行比较。下拉列表使用类型常量,因此,即使用户选择文本,它们实际上也在选择数值。如果选择了特定元素,我将启用三个单选按钮。如果用户更改了他们的选择,或者他们没有选择阵列中的特定对象,则会选择默认单选按钮,并禁用所有单选按钮。 `
function enableRadioButtons() {
var RESULTED_IN_ACCIDENT_REQUIRED_CHARGE = [102508,233773,233774];
for(var i = 0; i < RESULTED_IN_ACCIDENT_REQUIRED_CHARGE.length; i++) {
if (document.getElementByTagName(select).value == RESULTED_IN_ACCIDENT_REQUIRED_CHARGE) {
document.getElementByName("optradio").disabled = false;
}
else {
document.getElementById("radio3").checked = true;
document.getElementByName("optradio").disabled = true;
}
}
}
<html:select styleClass="input" name="drivingRecordForm" property="conviction.chargeTid" onchange="enableRadioButtons(this)">
<html:option value="0">Select one...</html:option>
<optgroup label="Moving">
<html:options collection="movingChargeOptions" property="value" labelProperty="label" />
</optgroup>
<optgroup label="Non-Moving">
<html:options collection="nonMovingChargeOptions" property="value" labelProperty="label" />
</optgroup>
</html:select>
<tr valign="bottom">
<td> </td>
<td colspan="2">Did the violation result in an accident?</td>
<td colspan="2">
<label for="radio1">
<input id="radio1" type="radio" name="optradio" value="radioyes" disabled="disabled">Yes
</label>
<label for="radio2">
<input id="radio2" type="radio" name="optradio" value="radiono" disabled="disabled">No
</label>
<label for="radio3">
<input id="radio3" type="radio" name="optradio" value="radiounk" checked disabled="disabled">Unknown
</label>
</td>
</tr>
感谢。
答案 0 :(得分:0)
您正在尝试针对一组值检查值,因此您的if语句应使用.indexOf()
RESULTED_IN_ACCIDENT_REQUIRED_CHARGE.indexOf(document.getElementByTagName(select).value) >= 0
如果索引大于或等于零,则表示该值在数组中。