在我的主要jsp页面中,我有类似
的内容<%@ include file="../customParametersHorizontal.jsp" %>
<tr>
<td align="center" class="ReportParamsGenerateButtonCell">
<html:submit onclick="if(preGenerateCriteria()){return true;} else {return false;}">Generate</html:submit>
</td>
</tr>
在customParametersHorizontal.jsp中,还有另一个包含dateSelection1.jsp的包含,它验证表单上设置的日期和时间。
<script>
function validateHHMM(inputField, message) {
var isValid = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/.test(inputField);
if (isValid) {
}else {
alert("Time must be entered in the format HH:MM AM/PM");
}
return isValid;
}
</script>
所以,在dateSelection1.jsp中,我尝试使用以下命令禁用主jsp中的按钮:
document.form1.ReportParamsGenerateButtonCell.disabled= true;
但是,我得到一个错误,说对象为null或未定义。
无论如何,我可以设置一个var,以便它可以被主窗体追逐并相应地禁用按钮吗?
答案 0 :(得分:1)
document.form1.ReportParamsGenerateButtonCell
将返回null或错误,除非您将name属性设置为form1
和ReportParamsGenerateButtonCell
的元素如下所示:
<form name="form1">
<input type="submit" name="ReportParamsGenerateButton" value="Generate" />
</form>
通过这种方式,您可以毫无问题地执行document.form1.ReportParamsGenerateButton.disabled = true
。
答案 1 :(得分:1)
这是一种方法,保留<html:submit>
标记,并且不引入jQuery:首先,添加styleId属性,以便您的按钮具有可以抓取的HTML ID:
<html:submit styleId="my_submit" onclick="if(preGenerateCriteria()){return true;} else {return false;}">Generate</html:submit>
接下来,使用ID获取DOM的元素并禁用它:
var elt = document.getElementById("my_submit");
elt.disabled = true;
<强>更新强>
如果我正确理解原始问题,main.jsp包含customParametersHorizontal.jsp,whici包含dateSelection1.jsp。因此,这三个脚本只渲染一个HTML页面,因此只有一个文档对象。
我只在HTML页面上看到一个<form>
的(部分)代码。即使您有多个表单,.getElementById()也适用于所有表单中的所有DOM元素,而不是访问元素的document.form1
样式。
请确保在适当的位置调用validateHHMM()以启用/禁用提交按钮,并确保在用户更正其输入以使其有效后重新启用该按钮。