价值保持不变

时间:2018-08-08 09:47:29

标签: javascript smarty

我想在将输入字段提交给服务器之前更改其值。它应该去除口音。例如,如果用户键入“Café”,则应搜索“ Cafe”。

第一次可以正常运行,但是当我想尝试其他输入时,它又回到了我的第一次输入。

例如: 我搜索“咖啡馆”。然后,它通常会搜索“ Cafe”。 现在,当我要搜索“水果”时,它将搜索“咖啡馆”,因为值没有变化。

首先,我创建了一个像这样的表

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

桌子工作正常,我得到了应该得到的所有东西。

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(); 
}

如您所见,每次单击按钮时,我都尝试更改该值,但这就是我找不到更多解决方法的关键所在。我还尝试插入另一个按钮,该按钮仅应使用不带重音的单词覆盖当前值,该按钮也无效。

我认为这与方式有关,如何尝试更改值,但我不知道该如何以另一种方式进行。

1 个答案:

答案 0 :(得分:0)

更改了以下方式。正如我在想的那样,在将最新值提交给服务器之前,我很难将其分配给输入字段。因此,我通过以下方式对其进行了修复:

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;
}

当用户按下按钮并将最新值分配给输入字段时,更改是正确的,该字段将被发送到服务器而没有任何重音。