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

準備完了イベントでコードをラップする必要があります:

$(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 に答える