使用会话属性设置值时重置表单字段值

时间:2011-11-09 13:14:28

标签: javascript html jsp

我有一个带有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 = "";
        }

然而,这也无效。

任何解决方案??

1 个答案:

答案 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)}"

另见: