2016-03-31 192 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()">