1

特殊文字を通常の文字に置き換える JavaScript 関数があります。

ピリオドを入力する.と、a

例 :info@example.comに変更されますinfo@exampleacom

私は何を間違っていますか?

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);
   });
});
4

1 に答える 1

4

String.searchダム文字列ではなく、正規表現を引数として受け入れます。文字.は、正規表現内で特別な意味を持ちます。「任意の文字に一致」を意味します。

したがって、コードが最終的に実行されるcom_acento.search(".")と、結果は常に0: ドットは最初の文字と一致します。さらに、正規表現には、コードが正しく機能しない原因となる特別な意味を持つ他の文字があります。

indexOfの代わりに を使用して問題を解決してくださいsearch

于 2013-03-27T21:52:52.260 に答える