getElementById无法获取表单上的控件

时间:2016-01-19 17:15:43

标签: javascript getelementbyid

我有以下搜索表单:

<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);返回表单ID "frmSearch"alert(inputs[0].id)会返回"q"这是文本框的ID,但alert(frm.getElementById("q"))根本不会显示任何内容,甚至没有空警报框。

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

1 个答案:

答案 0 :(得分:1)

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