使用Javascript验证单选按钮
Validating radio buttons with Javascript
我正在创建一个支付请求表单,用户将在其中选择加班费的支付方式。这两种选择是"工资"(用户在工资单中获得额外工资)或"时间"(用户获得补偿休假,以便日后休假)。
我创建了一个单选按钮输入,供用户选择其中一个。我写了一个验证,以确保选择了一个按钮,并且它在我的测试程序中运行良好,但当我将其纳入该项目的代码中时,代码不会运行。据我所见,我的测试程序和项目之间没有任何区别。
我试图使用一个更简单的布尔值,并希望坚持使用这个选项,而不是for循环或使用JQuery(如果可能的话)。
这是html:的相关部分
<form class="oTcard" name="otCard" onSubmit="return submitCard()" method="post">
<div>
<label>
<span>request</span>
<div style="display:block">
<input class="radio" type="radio" id="timePay" name="timePay" value="0" ><span>time</span>
<input class="radio" type="radio" id="timePay" name="timePay" value="1"><span>pay</span>
</div>
</label>
</div>
<input type="submit" id="submit" value="submit">
</form>
以下是javascript的相关部分:
function submitCard (form) {
errorString = "";
if((form.timePay[0].checked == false) && (form.timePay[1].checked == false)) {
alert("please choose either time or pay");
timePay[0].focus();
return false;
}
if(errorString = "") {
form.submit()
}
}
编辑以添加以下内容:
Cyril DD的回答为我指明了正确的方向。我更改了单选按钮的ID,使其对每个按钮都是唯一的。HTML现在显示为:
<form class="oTcard" name="otCard" onSubmit="return submitCard()" method="post">
<div>
<label>
<span>request</span>
<div>
<input class="radio" type="radio" id="selectTime" name="timePay" value="0"><span>time</span>
<input class="radio" type="radio" id="selectPay" name="timePay" value="1"><span>pay</span>
</div>
</label>
</div>
<input type="submit" id="submit" value="submit">
</form>
然后,我将每个按钮定义为一个单独的变量,而不是像以前那样统称为"timePay",并更改了如下javascript:
if((selectTime.checked == false) && (selectPay.checked == false)) {
alert("please choose either time or pay");
selectTime.focus();
return false;
}
HTML中的第一个:您应该使用相同的"name"属性,但使用不同的ID(演示)
有些浏览器可能与您尝试的操作不兼容。与其在function submitCard (form)
中使用"表单"参数,您只需要有一个函数function submitCard()
,然后使用它们的ID 在网页中找到您想要的元素
function submitCard () {
checkbox1 = document.getElementById("timeCheckBox").checked
checkbox2 = document.getElementById("payCheckBox").checked
if(!checkbox1 && !checkbox2)
alert("nothing checked !");
return false;
}
else{
return true
}
}
HTML看起来像
<form class="oTcard" name="otCard" onSubmit="return submitCard()" method="post">
<div>
<label>
<span>request</span>
<div style="display:block">
<input class="radio" type="radio" id="timeCheckBox" name="timePay" value="0" ><span>time</span>
<input class="radio" type="radio" id="payCheckBox" name="timePay" value="1"><span>pay</span>
</div>
</label>
</div>
<input type="submit" id="submit" value="submit">
</form>
您没有将表单的引用传递给submitCard()
函数。
更改
<form class="oTcard" name="otCard" onSubmit="return submitCard()" method="post">
至
<form class="oTcard" name="otCard" onSubmit="return submitCard(this)" method="post">
其他注意事项:
- 您不应在表单上多次使用id
timePay
- 您不应该将
div
标记放在span
标记内
此处的工作示例
<form class="oTcard" name="otCard" onSubmit="return submitCard(this)" method="post">
必须将参数传递给函数。这就是JS验证失败的原因。
- 客户端单选按钮列表验证
- 在单选按钮验证中同时显示错误消息
- javascript单选按钮验证,适用于chrome,不适用于IE
- 单选按钮验证:我可以验证它,但我不知道原因
- javascript中的单选按钮验证错误
- Javascript单选按钮验证错误弹出不到一秒钟,但不应消失
- 欧芹.js根据选定的单选按钮验证表单的各个部分
- 单选按钮验证错误
- JavaScript 中的 HTML 单选按钮验证问题
- AngularJS单选按钮验证
- 单选按钮验证
- 如何修复jQuery插件中的单选按钮验证
- Javascript单选按钮验证错误
- jQuery中的单选按钮验证
- jquery中的单选按钮验证
- 表单验证单选按钮验证
- 单选按钮验证不起作用
- 多组单选按钮验证javascript
- 动态增加单选按钮验证
- 单选按钮验证