Je souhaite modifier la valeur d'un champ de saisie avant qu'il ne soit soumis au serveur. Il devrait supprimer les accents. Par exemple, si un utilisateur tape "Café", il doit rechercher "Café".

Cela fonctionne bien la première fois, mais lorsque je veux essayer une entrée différente, cela revient à ma première entrée.

Par exemple : je recherche "Café". Ensuite, il recherche normalement "Café". Lorsque je veux maintenant rechercher "Fruits", il recherchera "Café", car la valeur ne change pas.

Tout d'abord, j'ai créé une table comme celle-ci

<table cellpadding=0 cellspacing=0>
        <tr>
            <td>
                <form action="?" method="Post" style="" name="f_suche">
                    <input name="ID" type="hidden" value="{$smarty.session.POOL.P_ID}" />
                    <input name="SID" type="hidden" value="{$smarty.session.POOLBLOCK.PB_ID}" /> 
                    <input name="addq"  type="hidden" value="" /> 
                    <input name="lastq" type="hidden" value="{$LASTQ|escape:" html"}" />
                    <div style="padding: 10px 0px;">
                        Pool:<strong> {$smarty.session.POOL.P_NAME}</strong> <br>
                    </div>
                    <div class="input-append">
                        <input class="input-xxlarge" name="q" value=qx id="q" type="text" data-provide="typeahead" autocomplete="off" >
                        <button class="btn btn-primary" type="button" onclick="form_submit();">Suchen</button>
                        {if count($key) > 0}
                        <button class="btn btn-primary" type="button" onclick="sx.save(); ">Speichern</button>
                        {else} {/if} <span id="save_rep"></span>
                    </div>
                </form> {if count($key) > 0}
            </td>
        </tr>
</table>

La table fonctionne bien et j'obtiens tout ce que je suis censé obtenir.

var eingabe = "{$smarty.post.q|escape:"quotes"}";
var pid = "{$smarty.session.POOL.P_ID}"; 
var pbid = "{$smarty.session.POOLBLOCK.PB_ID}"; 
{literal}

function replaceDiacritics(str) {
     var returnStr = '';
       if(str) {
            for (var i = 0; i < str.length; i++) {
              if (diacriticsMap[str[i]]) {
                returnStr += diacriticsMap[str[i]];
              } else {
                returnStr += str[i];
              }
            }
          }
          return returnStr;
}

var qx = replaceDiacritics(eingabe); 
console.log("Test: " + qx);

$('#q').attr('value', qx);
$("#myq").html(qx);

function form_submit() {
    show_loader(); 
//  document.getElementById("q").value = qx;
    document.f_suche.submit(); 
}

Comme vous pouvez le voir, j'ai essayé de changer la valeur à chaque fois, lorsque le bouton est cliqué, mais c'est le point où je ne trouve plus de solution de contournement. J'ai également essayé d'insérer un autre bouton, qui ne devrait écraser la valeur actuelle que par le mot sans accent, ce qui n'a pas non plus fonctionné.

Je pensais que cela avait quelque chose à voir avec la façon dont j'ai essayé de changer la valeur, mais je n'arrive pas à comprendre comment je peux le faire d'une autre manière.

0
Philip 8 août 2018 à 12:47

1 réponse

Meilleure réponse

Modifié de la manière suivante. Comme je le pensais, j'ai eu du mal à attribuer la valeur la plus récente au champ de saisie, avant de le soumettre au serveur. Je l'ai donc corrigé de la manière suivante :

function form_submit() {
  show_loader(); 

  var eingabe = document.getElementById("q").value;
  var result = replaceDiacritics(eingabe);
  document.getElementById("q").value = result;

  document.f_suche.submit(); 
}

function replaceDiacritics(str) {
   var returnStr = '';
   if(str) {
      for (var i = 0; i < str.length; i++) {
        if (diacriticsMap[str[i]]) {
          returnStr += diacriticsMap[str[i]];
        } else {
          returnStr += str[i];
        }
      }
    }
    return returnStr;
}

Les changements sont juste au moment où l'utilisateur appuie sur le bouton et la valeur la plus récente est attribuée au champ de saisie, qui est envoyé au serveur, sans accent.

0
Philip 13 août 2018 à 14:22