我想在将输入字段提交给服务器之前更改其值。它应该去除口音。例如,如果用户键入“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();
}
如您所见,每次单击按钮时,我都尝试更改该值,但这就是我找不到更多解决方法的关键所在。我还尝试插入另一个按钮,该按钮仅应使用不带重音的单词覆盖当前值,该按钮也无效。
我认为这与方式有关,如何尝试更改值,但我不知道该如何以另一种方式进行。
答案 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;
}
当用户按下按钮并将最新值分配给输入字段时,更改是正确的,该字段将被发送到服务器而没有任何重音。