javascript - 使用 session 属性设置值时重置表单字段值

标签 javascript html jsp

我有一个带有 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/

相关文章:

javascript - 显示 div 一段时间,然后隐藏它

javascript - JsTree:显示更多选项

html - 粘性页脚未完全粘在底部

html - twitter popover - 为不同的 popovers 应用不同的 css 类

java - 使用 servlet 和 jsp 截取屏幕截图并将其保存在服务器上

样式不起作用的 Javascript 函数参数

javascript - 时刻.js : change the default humanize() behavior

Javascript - 在函数中返回数组长度

java - 重新显示用户输入

java - c 内的双引号 :set (JSTL)