Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关注单选按钮_Javascript_Html_Radio Button - Fatal编程技术网

Javascript 关注单选按钮

Javascript 关注单选按钮,javascript,html,radio-button,Javascript,Html,Radio Button,目标:修复下面的代码,并理解为什么关注单选按钮不如关注文本输入框 问题:为什么这不起作用: function isValidRadio(elem, helperMsg) { var valid = false; for (var i = 0; i < elem.length; i++) { if (elem[i].checked) { return true; } } alert(notice);

目标:修复下面的代码,并理解为什么关注单选按钮不如关注文本输入框

问题:为什么这不起作用:

function isValidRadio(elem, helperMsg) {
    var valid = false;
    for (var i = 0; i < elem.length; i++) {
        if (elem[i].checked) {
            return true;
        }
    }
    alert(notice);
    setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
    return false;
}
示例代码:

函数focusElement(formName,elemName){
var elem=document.forms[formName].elements[elemName];
元素焦点();
elem.select();
}
函数validateForm(表单){
if(isValidText(form.phone,“Fail.”){
如果(isValidRadio(form.yesNo,“Fail.”){
返回true;
}
返回false;
}
}
是不是

详细信息:我正在使用php/javascript/html,到目前为止,我只在Chrome中测试了这一部分。表单工作正常,验证工作一直持续到它到达isValidRadio为止。警报会运行,但javascript会中断。代码修复会很好,但我不介意“终生垂钓…”

好吧,我找到了解决方案,AlienWebguy让我正确地思考阵列。我只需要指定关注哪个单选按钮,而不是哪个集合。以下是工作代码:

// Validate that the user has checked one of the radio buttons
function isValidRadio(radio, helperMsg) {
    var valid = false;
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    alert(helperMsg);
    radio[0].focus();
    return false;
}
//验证用户是否已选中其中一个单选按钮
功能isValidRadio(收音机、帮助器){
var-valid=false;
对于(var i=0;i

通过呼叫:
isValidRadio(form.yesNo,“Error.”)
感谢您的帮助

请不要评估setTimeout回调。@AlienWebguy:我开始处理这些回调,因为它们被认为是解决这类问题的可能方法(显然它们不起作用)。我很乐意拒绝他们,但我想知道他们到底出了什么问题。(除此之外,我认为它们是不必要的。)使用
setTimeout(“myfunction()”,0)的语法是不可取的
设置超时(函数(){myfunction();},0)@AlienWebguy:明白了,谢谢!
function focusElement(formName, elemName) {
    var elem = document.forms[formName].elements[elemName];
    elem.focus();
    elem.select();
}
function validateForm(form) {
    if (isValidText(form.phone, "Fail."))  {
        if (isValidRadio(form.yesNo, "Fail."))  {
            return true;
        }
        return false;
    }
}
<form id='myForm' action='/formPage/collectinfo/' method='post' accept-charset='UTF-8' name="myForm">
    <input name="phone" type="text" maxlength="14" size="14" />
    <input type="radio" name="yesNo" value="Yes"> Yes <input type="radio" name="yesNo" value="No" > No
<input type="submit" value=" Submit " name="Submit" onclick="return validateForm(myForm)" />
// Validate that the user has checked one of the radio buttons
function isValidRadio(radio, helperMsg) {
    var valid = false;
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    alert(helperMsg);
    radio[0].focus();
    return false;
}