2010-01-12 2 views
0

Noob à javascript etc. ici. Je suis un programmeur Java php/core chargé de maintenir un tas de code JS dans les JSP en utilisant Struts. Ce que je dois faire est simple, mais je ne peux pas trouver une solution facile. Étant donné l'extrait de code suivant pour un formulaire HTML struts'ed et une fonction de soumission JS, je dois modifier les données du champ de texte "requête" après que le bouton "Soumettre" est pressé, mais avant que les données soient soumises (collées sur l'URI de la page). Lorsque vous appuyez sur "submit", la page est rechargée avec? Search = whatever_was_typed_in_the_text_box ajouté à l'URL. J'ai besoin de modifier cette valeur: par exemple, une simple fonction de remplacement de caractère: si l'utilisateur tape "apple", une fonction remplaçant tous les caractères "a" par "b" ferait l'affaire, de sorte que lorsque "submit" est pressé avec "apple" dans le champ de texte, la page redirige vers (URL d'origine)? search = bpple.Soumission de formulaire JSP/Struts/JS: comment modifier les données de texte saisies avant leur soumission?

Je peux écrire la fonction de traitement de texte moi-même, (je connais assez JS pour cela au moins), mais je ne sais pas comment extraire l'entrée du formulaire et le modifier après avoir cliqué sur le bouton, mais avant soumission. J'ai essayé d'ajouter "document.forms [SEARCH_FORM_NAME] .query.value = replaceChars (document.forms [SEARCH_FORM_NAME] .query.value)" à la méthode JS "submitSearch", avant la ligne de soumission réelle (avec replaceChars comme manuscrit méthode simple de remplacement de caractères), mais n'a pas modifié les données soumises dans l'URL. J'ai aussi essayé document.getElementById ('query'). Value = ..., avec le même résultat. Comment puis-je modifier les données à partir du champ de texte dans le formulaire ci-dessous après avoir cliqué sur le bouton Soumettre, mais avant que le formulaire est soumis à l'adresse URL?

code Extrait:

<%@ 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

Utilisez-vous le framework Prototype? –

Répondre

1

Vous assignez submitSearch() à l'événement onclick pour le bouton d'envoi et l'événement onsubmit pour la forme!

Depuis l'événement onclick est déclenché avant l'événement onsubmit, l'événement sera onsubmit même pas le feu si l'événement onclick n'a pas retourné vrai !!!! Débarrassez-vous du gestionnaire onclick, alors cela devrait fonctionner.

+0

Conseil utile. Cela m'a mis sur la bonne voie, et j'aurais probablement pu l'utiliser pour mettre en œuvre une solution appropriée avec beaucoup plus de travail. J'ai décidé d'aller avec ce que je sais et d'éditer le champ dans le code Java de base sous-jacent (mauvaise forme, je sais). Merci pour l'aide! –

Questions connexes