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>
答案 0 :(得分:1)
您正在为提交按钮的submitSearch()
事件和表单的onclick
事件分配onsubmit
!
由于在onclick
事件之前触发了onsubmit
事件,如果onsubmit
事件未返回true,则onclick
事件甚至不会触发!
摆脱onclick
处理程序,它应该可以工作。