【发布时间】:2025-12-02 13:25:01
【问题描述】:
这里是 JavaScript 等的菜鸟。我是一名 php/core Java 程序员,负责使用 Struts 在 JSP 中维护一堆 JS 代码。我需要做的很简单,但我想不出一个简单的解决方案。给定以下 struts 的 HTML 表单和 JS 提交函数的代码摘录,我需要在按下“提交”按钮之后,但在提交数据之前修改文本字段“查询”的数据(附加到页面 URI)。当按下“提交”时,页面会重新加载,并在 URL 后附加 ?search=whatever_was_typed_in_the_text_box。我需要修改那个值:例如,一个简单的字符替换函数:如果用户键入“apple”,一个函数将所有“a”字符替换为“b”就可以了,这样当按下“提交”时在文本字段中使用“apple”,页面将重定向到 (original-URL)?search=bpple。
我可以自己编写文本处理函数,(至少我知道足够的JS),但我不知道如何从表单中获取输入并在单击按钮后修改它,但在提交之前.我尝试在实际提交行之前将“document.forms[SEARCH_FORM_NAME].query.value = replaceChars(document.forms[SEARCH_FORM_NAME].query.value)”添加到 JS“submitSearch”方法中(replaceChars 作为手写简单的字符替换方法),但它并没有改变提交到 URL 中的数据。我也尝试过 document.getElementById('query').value=...,结果相同。
在点击提交按钮后,但在表单提交到 URL 之前,如何修改下面表单中文本字段的数据?
代码摘录:
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<head>
<script type="text/javascript" defer="defer">
var SEARCH_FORM_NAME = "searchForm";
function submitSearch() {
$("sort").value = "filePath";
$("dir").value = "asc";
document.forms[SEARCH_FORM_NAME].submit();
return false;
}
</script>
</head>
<html:form styleId="searchForm" action="/search" method="get" onsubmit="return submitSearch();">
<table width="100%">
<tr>
<td style="width:10%;"><tiles:insert page="/WEB-INF/tiles/logo.jsp" /></td>
<td class = "search-cell" style="width:10%; white-space:nowrap;">
<html:text property="query" styleId="query" size="50"/>
<html:submit onclick="return submitSearch();">
Search
</html:submit>
</td>
</tr>
</table>
【问题讨论】:
-
你在使用 Prototype 框架吗??
标签: javascript html forms jsp