我有一个带有myName文本字段的搜索表单。
在加载时,使用会话属性设置表单中的字段。
类似的东西:
<% 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 = "";
}
然而,这也无效。
任何解决方案??
答案 0 :(得分:3)
<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}"
这样你就不再需要丑陋的<% %>
来获取会话属性了。此外,只要涉及用户控制输入,EL就会通过XSS attacks fn:escapeXml()
为您提供阻止JSTL的可能性:
value="${fn:escapeXml(nameValue)}"