getElementById 无法获取表单上的控件

getElementById cannot grab control on the form

我有以下搜索表单:

<form method="get" action="SearchResults.asp" id="frmSearch" name="frmSearch">
                <input id="q" name="q" type="text" size="50" />

                <input type="submit" value="Search" id="button1" name="button1" />

            </form>

我使用以下方法将 Javascript 添加到表单提交事件:

window.onload = function(){
var frm = document.getElementById("frmSearch");
        if (window.addEventListener){


            frm.addEventListener('submit',function() {validate(frm);} ,false);

        }else if (window.attachEvent){

            frm.attachEvent('onsubmit', function() {validate(frm);} );
        }
    }

验证函数如下:

function validate(frm) {
alert(frm.id);
        var inputs = frm.getElementsByTagName("input");
        alert(inputs[0].id);
            alert(frm.getElementById("q"));
            if (frm.getElementById("q").value=='') {
                alert("Please enter your search terms.");
                frm.getElementById("q").focus();
                return false;
            }

            frm.getElementById("button1").disabled = true;

            return true;    
        }

验证函数运行但显然出错,因为 Javascript 忽略了行

frm.getElementById("q")

因为alert(frm.id); returns form id "frmSearch", alert(inputs[0].id) returns "q" 是文本框的id, 但是alert(frm.getElementById("q")) 根本不显示任何内容,甚至没有空的警告框。

任何人都可以帮助我诊断问题吗?

getElementById是文档的一个方法,不是每个HTML元素。您需要致电 document.getElementById().