0

我有一个函数可以在文本字段中替换特殊字符并将所有文本更改为大写。<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);
});
4

2 回答 2

2

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

$(document).ready(function() {
  $(":input").live('blur', function() {
    retiraAcento(this.value, this);
  }); 
});
于 2013-03-18T22:13:02.840 回答
1

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

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

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

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

于 2013-03-18T22:25:25.587 回答