【问题标题】:using getElementsByName to validate radio button使用 getElementsByName 验证单选按钮
【发布时间】:2012-09-04 16:36:32
【问题描述】:

我正在尝试验证是否检查了一组单选按钮以验证表单。

function formValidator() {
    var triedIt = document.getElementsByName('tried');
    if(radioChecked(triedIt, "Please select") {
        return true;
    }
    return false;   
}

function radioChecked(elem, helperMsg) {
    if(document.myform.tried.checked == 1) {
        return true;
    }
    else {
        alert(helperMsg);
        elem.focus();
        return false;
    }
}

这会返回警报,但由于某种原因,表单还是会被处理。我想知道我做错了什么......任何帮助将不胜感激。

如果您想知道为什么我不只使用 jquery 等......很遗憾,它不是一个选项。谢谢!

【问题讨论】:

  • 不确定是否是拼写错误,但您的第一个函数缺少结束 }
  • 与您的问题无关,但document.myform.tried.checked 实际上应该是elem.checked
  • 嘿,我已经根据你的建议更新了代码,但它似乎仍然继续处理表单

标签: javascript forms radio-button validation radio-group


【解决方案1】:
function formValidator(){
var triedIt = document.getElementsByName('tried');
if(radioChecked(triedIt, "Please select")){
return true;
}
return false;   
}

function radioChecked(elem, helperMsg){
if(document.myform.tried.checked == 1) {
    return true;
}else{
    alert(helperMsg);
    elem.focus();
    return false;
}
}

试试这个,我想你跳过了一个右括号)in if(radioChecked(triedIt, "Please select"))这就是它发生的原因

【讨论】:

  • 嗨,谢谢。这实际上是我的一个错字,我确实在我的代码中包含了括号。还有其他想法吗?
  • 其他看起来对的东西你也可以更新你的html结尾
【解决方案2】:

我认为这是因为 document.getElementsByName('tried') 返回元素数组。因此,当您调用elem.focus() 时,它会抛出错误(因为数组没有方法焦点)并且js 会停止执行。

【讨论】:

  • 完美,谢谢!很有魅力。非常有用的信息;)
  • 是的,我跳过了这部分
猜你喜欢
  • 2011-05-07
  • 2020-02-24
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多