Javascript函数删除特殊字符

时间:2013-03-18 22:10:40

标签: javascript jquery

我有一个函数可以在文本字段中替换特殊字符并将所有文本更改为大写。 如果我直接在<script>标记内添加该函数:

<script language="JavaScript" type="text/javascript">
function ...
<script/>

脚本按预期工作。

如果我将其作为外部文件包含在内:

<script type="text/javascript" src="<?php echo $dir_js; ?>/plugins/replace.js"></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.toUpperCase();
}

$(":input").live('blur', function() {
  retiraAcento(this.value, this);
});

2 个答案:

答案 0 :(得分:2)

您应该将代码包装在ready事件中:

$(document).ready(function() {
  $(":input").live('blur', function() {
    retiraAcento(this.value, this);
  }); 
});

答案 1 :(得分:1)

我的猜测是你的外部文件与主文件的编码不同。您应该确保这两个文件都具有UTF-8编码,此外,您还应该确保您使用的服务器正在为具有正确内容类型的文件提供服务。

如果文件具有不同的编码,这会导致您遇到的问题,因为输入中输入的á与您的javascript文件中的á不匹配 - 因此无法找到并删除。

另一种方法是不在外部JavaScript中使用硬编码值,而是使用RegExp检查并在此处找到信息:

http://www.regular-expressions.info/unicode.html#grapheme