我创建了一个 fiddle
希望用户点击"is"并显示 # 字段,然后点击“否”将其隐藏。我是否需要另一个关于“否”的函数来执行此操作?
var empNumber, radios;
function showReqEmp() {
if (!radiosChecked()) {
empNumber.style.display = 'none';
} else {
empNumber.style.display = 'block';
}
}
function showReqEmp(id) {
var a = document.getElementById(id);
if (!radiosChecked())
a.style.display = 'none';
else
a.style.display = 'block';
}
function radiosChecked() {
var radios = document.getElementsByName('returning_employee');
for (var i = 0; i < radios.length; i++)
if (radios[i].checked) return true;
return false;
}
showReqEmp('requiredNum');
showReqEmp('requiredNumText');
<font color="Red">*</font>Returning Employee:</td>
<input type="radio" name="returning_employee" value="Yes" onclick="showReqEmp('requiredNum'); showReqEmp('requiredNumText')">Yes
<input type="radio" name="returning_employee" value="No" onclick="showReqEmp('requiredNumText'); showReqEmp('requiredNum')" />No
<lable id="requiredNumText" style="display:none"><font color="Red">*</font>Employee Number:</lable>
<lable id="requiredNum" style="display:none">
<input type="text" id="employee_number" name="employee_number" placeholder="123456789">
好的,现在我在验证时遇到了这个问题。 奥 git _a 显示/隐藏有效,但我无法验证以检查他们在点击"is"后是否输入了数据
var numberExp = /^[0-9\-]+$/;
function validate()
{
if(document.newempRequest.returning_employee.checked && !(document.newempRequest.employee_number.value.match(numberExp)))
{
alert("Please provide the employee number");
document.newempRequest.employee_number.focus();
return false;
}
return true;
}
我尝试更改输入标签以区分是/否,但这会破坏显示/隐藏
HTML代码与上面相同。
最佳答案
只需修改 radiosChecked
函数,仅在选中 Yes
复选框时返回 true
。
function radiosChecked() {
var radios = document.getElementsByName('returning_employee')[0];
return radios.checked;
}
原代码:
var radios = document.getElementsByName('returning_employee');
for (var i = 0; i < radios.length; i++)
if (radios[i].checked) return true;
return false;
即使选中组中的任何复选框,也会返回true
。因此不会发生切换。
关于Javascript - 不反转显示/隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713449/