Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将重音字符替换为其非重音等效字符_Javascript - Fatal编程技术网

Javascript 将重音字符替换为其非重音等效字符

Javascript 将重音字符替换为其非重音等效字符,javascript,Javascript,我有一个不允许重音的文本字段。我使用的代码是: <input type="text" onkeyup="value=value.replace(/[^0-9a-zA-Z' ']/g,'')"> 但是,我需要替换字符,而不是阻塞字符,例如,键入“更改为C” 我找到了一个函数,它正在工作,但当我键入一个点时,会出现字母a 你能帮我吗 <script>function retiraAcento(palavra,obj){ com_acento = 'áàãâäéèêë

我有一个不允许重音的文本字段。我使用的代码是:

<input type="text" onkeyup="value=value.replace(/[^0-9a-zA-Z' ']/g,'')">

但是,我需要替换字符,而不是阻塞字符,例如,键入“更改为C”

我找到了一个函数,它正在工作,但当我键入一个点时,会出现字母a

你能帮我吗

<script>function retiraAcento(palavra,obj){  
com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ<,>´`-,*/~';  
sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC          ';  
nova='';  

for(i=0;i<palavra.length;i++) {
if (com_acento.search(palavra.substr(i,1))>=0) {  
    nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);  
} else {  
    nova+=palavra.substr(i,1);  
} 
}  
obj.value = nova;}</script><input type="text" onKeyUp="javascript:retiraAcento(this.value, this);">
函数retiraAcento(palavra,obj){
comèacento=‘èèèèèèèèèèèèèèèèèèèè193;èèèèèèèèèèè23;
sem_acento=‘aaaaeaeeiiiouuuuuucaaaaeeiiouuuuuuuc’;
新星='';
对于(i=0;i=0){
nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
}否则{
新星+=帕拉夫拉宫(i,1);
} 
}  
obj.value=nova;}

我没有深入了解为什么将
替换为,但是这个版本没有这种行为。它的工作原理并不完全相同,并且对整个字符串进行操作,但这可能不是问题,除非它用于大型文本字段,在这种情况下,可以通过其他方式对其进行优化

const com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ<,>´`-,~';
const sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC          ';

function retiraAcento(string) {
    return string
    .split('')
    .map(char => {
        const charIdx = com_acento.indexOf(char)
        if (charIdx !== -1) {
        return sem_acento[charIdx]
      }
      return char
    })
    .join('')
}

function replaceCharOnChange(evt) {
  event.target.value = retiraAcento(evt.target.value)
}

document.querySelector('input').addEventListener('keyup', replaceCharOnChange)
const comèacento='aèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèè23;
const sem_acento='aaaaeaeeiioouucaaaaeeiioouuca';
函数retiraAcento(字符串){
返回字符串
.拆分(“”)
.map(char=>{
常量charIdx=com\u acento.indexOf(char)
如果(charIdx!==-1){
返回sem_acento[charIdx]
}
返回字符
})
.加入(“”)
}
函数替换CharonChange(evt){
event.target.value=retiraAcento(evt.target.value)
}
document.querySelector('input')。addEventListener('keyup',replaceCharOnChange)
抱歉,这是用英语改写的一半!我还考虑使用两个长度相同的字符串以外的另一种数据结构。最简单的是对象查找表,例如:


{á:‘a’,ç:‘c’,…}


但是你也可以用其他方法来处理它

可能的重复我承认用
a
代替
a比
,但最好首先修复文本字段不允许重音的原因。只有脱衣口音作为最后手段。Unicode让世界变得更好——如果可能的话,我们应该使用它。