验证单个单选按钮在可用的javascript验证脚本中不起作用
我随机生成了单选按钮系列,如验证单个单选按钮在可用的javascript验证脚本中不起作用,javascript,validation,radio-button,Javascript,Validation,Radio Button,我随机生成了单选按钮系列,如 <input type="radio" name="creatorusers" value="1"> <input type="radio" name="creatorusers" value="1"> <input type="radio" name="creatorusers" value="1"> <input type="radio" name="creatorusers" value="1"> .....so
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
.....so on
您可以这样做:
function validate(frm){
var isChecked = false;
for (var i=0; i<frm.elements.length; i++)
{
if (frm.elements[i].type === 'radio'){
if (frm.elements[i].checked === true){
isChecked = true;
break;
}
}
}
if (isChecked === true){
return true;
}
else{
alert('You should select an option first !');
}
}
现在,
validate
功能将确保至少选中一个单选按钮,否则它将不会提交。啊,现在我知道了。如果只有一个单选按钮,则frm.creatorusers
不是数组。跳过它:
var mycreator = -1;
var checked = false;
if(typeof frm.creatorusers.length === 'number') {
for (var i=frm.creatorusers.length; i--; ) {
if (frm.creatorusers[i].checked) {
mycreator = i;
checked = true;
break;
}
}
}
else if(frm.creatorusers.checked){
mycreator = //? what here?
checked = true;
}
if(!checked) {
alert("You must select a Creator User!");
return false;
}
如果mycreator
仅用于检查按钮是否被选中,则可以将其从上述代码中完全删除
对代码的进一步说明:
- 始终使用
声明变量,否则它们将是全局变量var
- 使用
结束循环break
- 也许这只是因为复制和粘贴的缘故,但拥有许多具有相同值的单选按钮并没有多大意义
creatorusers
仅当表单中有多个同名元素时才是数组。您可以在必要时创建单个元素数组来解决此问题
下面是一个抽象函数,它可以验证任意复选框列表
function ensureChecked(checkboxes, error) {
if (checkboxes) {
var cbx = (checkboxes.length > 0) ? checkboxes : [checkboxes];
for (var i=0; i<cbx.length; i++) {
if (cbx[i].checked) {
return true;
}
}
alert(error);
}
return false;
}
这应该可以
function isRadioSelected(btn) {
if(typeof btn.length === 'number') {
for(var i=0;i<btn.length;i++)
if(btn[i].checked) return true
}else{
if(btn.checked) return true
}
return false
}
功能已选定(btn){
如果(btn.length的类型=='number'){
对于(var i=0;i您可以尝试以下方法:
<html>
<head>
<script type="text/javascript">
function confirmsubmit() {
var btn = document.formname.buttonname
if (btn.checked == false)
{
window.alert("You did not click the button.");
btn.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form method="post" action="mailto:youremail@yourdomain.com"
name="formname" onsubmit="return confirmsubmit();">
click here: <input type="radio" name="buttonname"><br />
<p><input type="submit" value="Submit" name="submit"></p>
</form>
</body>
</html>
函数confirmsubmit(){
var btn=document.formname.buttonname
如果(btn.checked==false)
{
window.alert(“您没有单击按钮”);
btn.focus();
返回false;
}
返回true;
}
单击此处:
当我提醒“frm.creatorusers.length”时,我会收到“未定义”的警告,但在另一侧,当单选按钮上有多个时,则此验证有效。身份比较很好,但可能是您做得太多了吗?:)例如,isChecked
在您的代码中只能是布尔值,因此return isChecked
是一个安全的赌注。另外,j
是什么?j是什么来自?我编辑您的答案是为了在函数中传递表单,如果表单上没有ID,则不使用getElementById。请参阅本页上我的其他注释。最后一点是,您的答案是Kling,它只是一个示例,因此只是一个复制粘贴,其次,您的代码不起作用,它总是给出消息“您必须选择一个创建者用户!”@OmtheEterminance:代码对我有效:可能还有其他错误。我得到以下错误:frm.creatorusers未定义[Break On this error]var rdo=(frm.creatorusers.length>…rm.creatorusers:frm.creatorusers;infirebug@OMThe:这意味着frm.creatorusers
未定义(duh)。显然,始终没有使用此名称的表单字段。只需事先检查它是否存在。(这也意味着您不是在真正使用我的代码,而是在使用其他内容。我不明白您当时为什么接受我的答案,以及为什么在代码停止工作时取消接受它。)确保通过表单!!!onsubmit=“return validate(this)”
-这也会使表单的命名变得不必要。但是,如果您使用document.getElementById(“表单的ID”)确保表单有一个ID而不仅仅是一个名称。IE将允许getElementById(“表单的名称”),但其他浏览器将不允许
ensureChecked(frm.creatorusers, "You must select a Creator User!");
function isRadioSelected(btn) {
if(typeof btn.length === 'number') {
for(var i=0;i<btn.length;i++)
if(btn[i].checked) return true
}else{
if(btn.checked) return true
}
return false
}
<html>
<head>
<script type="text/javascript">
function confirmsubmit() {
var btn = document.formname.buttonname
if (btn.checked == false)
{
window.alert("You did not click the button.");
btn.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form method="post" action="mailto:youremail@yourdomain.com"
name="formname" onsubmit="return confirmsubmit();">
click here: <input type="radio" name="buttonname"><br />
<p><input type="submit" value="Submit" name="submit"></p>
</form>
</body>
</html>