我有一个带有 myName 文本字段的搜索表单。
加载时,表单中的字段使用 session 属性设置。
类似于:
<% String nameValue = (String)session.getAttribute("nameValue"); %>
下面是定义文本字段的代码:
<form name="myForm" method="POST">
<input type="text" name="myName" id="myName" size="45" maxlength="49" value="<%=nameValue%>">
</form>
在相同的表单中,我有一个重置字段定义如下:
<input type="reset" value="Reset" id="Reset"/>
但是,单击此字段时,myName 字段不会变空。
我还尝试定义一个 javascript 函数:
<input type="reset" value="Reset" onclick="fnFormReset()"/>
函数是:
function fnFormReset(){
alert("here");
document.myForm.myName.value = "";
}
但是,这也不起作用。
任何解决方案??
最佳答案
<input type="reset">
不会清除输入值。它只是将输入值重置为初始状态。更改值,然后单击重置按钮。它的实际工作将一目了然。
关于JS函数的问题; onclick 将在 type="reset"
之前运行做它的默认工作(重新显示原始值)。因此,您需要更改 type="reset"
至 type="button"
:
<input type="button" value="Reset" onclick="fnFormReset()"/>
或添加 return false;
结束 onclick 以阻止默认操作:
<input type="reset" value="Reset" onclick="fnFormReset(); return false;"/>
与具体问题无关,我建议使用EL (Expression Language)重新显示值:
value="${nameValue}"
这样你就不需要那么丑了<% %>
不再获取 session 属性。此外,每当它涉及用户控制输入时,EL 都会为您提供防止 XSS attacks 的可能性。通过使用 JSTL 转义它fn:escapeXml()
:
value="${fn:escapeXml(nameValue)}"
另见:
关于javascript - 使用 session 属性设置值时重置表单字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065541/