我有以下搜索表单:
<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"))
根本不会显示任何内容,甚至没有空警报框。
任何人都可以帮我诊断问题吗?
答案 0 :(得分:1)
getElementById
是一种文档方法,而不是每个HTML元素。您需要致电document.getElementById()
。