0

在我的主 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>

在 customParametersHorizo​​ntal.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;

但是,我收到一个错误,说对象为空或未定义。

无论如何,我可以设置一个var,以便它可以被主窗体破解并相应地禁用按钮?

4

2 回答 2

1

document.form1.ReportParamsGenerateButtonCell将返回 null 或错误,除非您将元素的 name 属性设置为form1ReportParamsGenerateButtonCell像下面的示例一样:

<form name="form1">
    <input type="submit" name="ReportParamsGenerateButton" value="Generate" />
</form>

这样你就可以document.form1.ReportParamsGenerateButton.disabled = true毫无问题地做。

于 2012-06-04T14:09:53.700 回答
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 包括 customParametersHorizo​​ntal.jsp,其中包括 dateSelection1.jsp。所以这三个脚本只渲染一个 HTML 页面,因此是一个文档对象。

我只<form>在 HTML 页面上看到一个的(部分)代码。即使您确实有多个表单,.getElementById() 也适用于所有表单中的所有 DOM 元素,而不是document.form1访问元素的样式。

确保您在适当的位置调用 validateHHMM() 来启用/禁用您的提交按钮,并确保一旦用户更正他的输入以使其有效,该按钮就会重新启用。

于 2012-06-04T14:24:56.277 回答