JSP / Struts / JS表单提交:如何在提交之前修改输入的文本数据?

时间:2010-01-12 19:56:03

标签: javascript html forms jsp

Noob at javascript等。我是一个php / core Java程序员,负责使用Struts在JSP中维护一堆JS代码。我需要做的很简单,但我无法找到一个简单的解决方案。给出struts的HTML表单和JS提交函数的以下代码摘录,我需要在按下“Submit”按钮之后但在提交数据之前修改文本字段“query”的数据(添加到页面URI)。当按下“提交”时,页面将重新加载,并在URL中附加?search = whatever_was_typed_in_the_text_box。我需要修改该值:例如,一个简单的字符替换函数:如果用户输入“apple”,用“b”替换所有“a”字符的函数就可以了,这样当按下“submit”时在文本字段中使用“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>

1 个答案:

答案 0 :(得分:1)

您正在为提交按钮的submitSearch()事件和表单的onclick事件分配onsubmit

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

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