2013-03-27 107 views
1

我有一個JavaScript函數,用正常字符替換特殊字符。特殊字符替換函數

當我鍵入一個時期.它改爲a

舉例:[email protected]改爲[email protected]

我在做什麼錯?

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.toUpperCase(); 
    obj.value = nova 
} 
$(document).ready(function() { 
    $(":input").live('blur', function() { 
     retiraAcento(this.value, this); 
    }); 
}); 
+0

聲明UTF-8編碼。使用UTF-8編碼。 – 2013-03-27 21:43:23

+0

頁面全部使用UTF-8 – user2112020 2013-03-27 21:43:33

+0

雖然聲明它...'' – xandercoded 2013-03-27 21:43:49

回答

4

String.search接受正則表達式作爲參數,而不是一個啞字符串。字符.在正則表達式中具有特殊含義;它的意思是「匹配任何字符」。

因此,當您的代碼結束做com_acento.search(".")時,結果始終爲0:該點與第一個字符匹配。另外,在正則表達式中還有其他字符具有特殊含義,這也會導致代碼無法正常工作。

使用​​而不是search來解決您的問題。

+0

工作完美。謝謝。 – user2112020 2013-03-27 21:57:30