Отправка формы JSP / Struts / JS: как изменить введенные текстовые данные перед отправкой? - PullRequest
0 голосов
/ 12 января 2010

Noob на JavaScript и т. Д. Здесь. Я программист на php / core Java, которому поручено поддерживать JS-код в JSP с помощью Struts. То, что мне нужно сделать, это просто, но я не могу найти легкое решение. Учитывая приведенный ниже фрагмент кода для HTML-формы Struts и функции отправки JS, мне нужно изменить данные текстового поля «query» после нажатия кнопки «Submit», но до того, как данные будут отправлены (прикреплены к URI страницы). Когда нажата «отправить», страница перезагружается с добавлением? Search = what_was_typed_in_the_text_box к URL. Мне нужно изменить это значение: например, простая функция замены символов: если пользователь вводит «apple», функция, заменяющая все символы «a» на «b», сделает свое дело, чтобы при нажатии «submit» с «яблоком» в текстовом поле, страница перенаправляется на (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 Ответ

1 голос
/ 12 января 2010

Вы присваиваете submitSearch() событию onclick для кнопки отправки И событию onsubmit для формы!

Поскольку событие onclick запускается до события onsubmit, событие onsubmit даже не сработает, если событие onclick не вернет true !!!!

Избавьтесь от обработчика onclick, тогда он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...