【问题标题】:JSP/Struts/JS form submission: how to modify inputted text data before submission?JSP/Struts/JS表单提交:提交前如何修改输入的文本数据?
【发布时间】: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


【解决方案1】:

您将submitSearch() 分配给提交按钮的onclick 事件和表单的onsubmit 事件!

由于onclick 事件在onsubmit 事件之前触发,如果onclick 事件没有返回true,onsubmit 事件甚至不会触发!!!!

摆脱 onclick 处理程序,然后它应该可以工作。

【讨论】:

  • 有用的建议。它让我走上了正确的轨道,我可能已经用它来实施一个适当的解决方案,需要做更多的工作。我决定使用我所知道的并编辑底层核心 Java 代码中的字段(我知道格式不好)。感谢您的帮助!