2016-03-31 150 views
0

比方说,我有一个输入字段更改输入字段的值,而写

<input type="text" class="form-control" name="filename"> 

和不写是这样的:

是否有可能来检查,而如果该字段有字母ä,并在写入时将其更改为a,请写信?

到目前为止,我建立了这个:

$search = array('ä', 'Ä'); 
$replace = array('ae', 'Ae'); 

$project = str_replace($search, $replace, $input); 
+0

是的,没有,你不能使用PHP这只并且需要使用jQuery/AJAX这个工作,但是,我只建议使用jQuery/JS,因为它是做电缆什么您希望在用户每次写入字符时不必执行AJAX调用。 – Epodax

回答

0

你不会用PHP做到这一点,你会用javascript做到这一点:

var el = document.getElementById("filename"); 
el.addEventListener('keyup', function(){ 
    var replace = ['ä','å']; 
    var replacewith = 'a'; 
    var replace1 = ['ö']; 
    var replacewith1 = 'o'; 
    replace.forEach(function(letter){ 
     el.value = el.value.replace(letter, replacewith); 
    }); 
    replace1.forEach(function(letter){ 
     el.value = el.value.replace(letter, replacewith1); 
    }); 
}); 

添加id="filename"到输入元素此上班。您可以根据需要添加尽可能多的字母到替换阵列。 您还可以添加更多阵列来替换字母。

https://jsfiddle.net/dek5as1x/1

编辑:解几封信

var el = document.getElementById("filename"); 
el.addEventListener('keyup', function(){ 
    var replaces = [['ä','å'],['ö','ø'],['ï','ì'],['ü','ù','û'],['ë','ê']]; 
    var replacewith = ['a','o','i','u','e']; 
    replaces.forEach(function(letterGroup, index){ 
     letterGroup.forEach(function(letter){ 
      el.value = el.value.replace(letter, replacewith[index]); 
     }); 
    }); 
}); 

在这里,你添加一个新的阵列([])来代替。然后,将所有字母添加到该数组,并将其转换为与该数组相同的字母。例如:['ê','ë','è']。然后,将该字母添加到replacewith数组。字母来代替数组中的字母与替换中的对应数组具有相同的索引是非常重要的。 这个解决方案应该是一个更清洁的,当你有很多字母来替换。

+0

它工作到目前为止太棒了。你知道一个解决方案,以更好的方式编写替换我有10个字母,我想改变,而编写和链接这些变量看起来不太好,我认为。 –

+0

hm不工作 –

+0

非常好,非常感谢! –

0

您不能使用PHP来完成此操作,因为PHP是服务器端。

但是你可以使用JavaScript来做到这一点。 尝试:

<script language="JavaScript"> 
function replace() { 
var input = document.getElementById("filename"); 
input.value = input.value.replace("ä","a"); 
} 
<script> 

<input type="text" class="form-control" name="filename" onchange="replace()">