我在 HTML 表单中有两个单选按钮。当其中一个字段为空时,会出现一个对话框。如何检查是否选择了单选按钮?
如何检查是否使用 JavaScript 选择了单选按钮?
IT技术
javascript
radio-button
2021-01-17 13:17:47
6个回答
让我们假设你有这样的 HTML
<input type="radio" name="gender" id="gender_Male" value="Male" />
<input type="radio" name="gender" id="gender_Female" value="Female" />
对于客户端验证,这里有一些 Javascript 来检查选择了哪一个:
if(document.getElementById('gender_Male').checked) {
//Male radio button is checked
}else if(document.getElementById('gender_Female').checked) {
//Female radio button is checked
}
根据您的标记的确切性质,上述内容可能会更有效,但这应该足以让您入门。
如果您只是想查看页面上的任何位置是否选择了任何单选按钮,PrototypeJS使它变得非常容易。
这是一个函数,如果在页面上的某处至少选择了一个单选按钮,它将返回 true。同样,这可能需要根据您的特定 HTML 进行调整。
function atLeastOneRadio() {
return ($('input[type=radio]:checked').size() > 0);
}
对于服务器端验证(请记住,您不能完全依赖 Javascript 进行验证!),这取决于您选择的语言,但您只需要检查gender
请求字符串的值。
使用jQuery,它就像
if ($('input[name=gender]:checked').length > 0) {
// do something here
}
让我把它分解成几部分以更清楚地说明它。jQuery 从左到右处理事物。
input[name=gender]:checked
input
将其限制为输入标签。[name=gender]
将其限制为前一组中具有名称性别的标签。:checked
将其限制为在上一组中选择的复选框/单选按钮。
如果您想完全避免这种情况,请checked="checked"
在 HTML 代码中将其中一个单选按钮标记为选中 ( ),这将保证始终选择一个单选按钮。
一种普通的 JavaScript 方式
var radios = document.getElementsByTagName('input');
var value;
for (var i = 0; i < radios.length; i++) {
if (radios[i].type === 'radio' && radios[i].checked) {
// get value, set checked flag or do whatever you need to
value = radios[i].value;
}
}
只是试图通过在 vanilla JavaScript 中加入一些 CSS 选择器糖来改进Russ Cam 的解决方案。
var radios = document.querySelectorAll('input[type="radio"]:checked');
var value = radios.length>0? radios[0].value: null;
这里并不真正需要 jQuery,querySelectorAll 现在已经得到了足够的广泛支持。
编辑:修复了 css 选择器的一个错误,我已经包含了引号,虽然你可以省略它们,但在某些情况下你不能,所以最好把它们留在里面。
您可以使用这个简单的脚本。您可能有多个具有相同名称和不同值的单选按钮。
var checked_gender = document.querySelector('input[name = "gender"]:checked');
if(checked_gender != null){ //Test if something was checked
alert(checked_gender.value); //Alert the value of the checked.
} else {
alert('Nothing checked'); //Alert, nothing was checked.
}