2009-08-18 16 views
1

私は、textarea要素のIEで完璧に動作する次のコードを持っています。JavascriptがFFで動作しない

(ED:読みやすいように改行)

<textarea name="mem_message" cols="25" rows="5" 
    onkeypress="return taLimit(this)" 
    onkeyup="return taCount(this,'myCounter')"> 
    <? echo $_SESSION['mem_message']; ?> 
</textarea> 

これは、検証関数を呼び出します。

<script language="Javascript"><!--Counter for Message Box --> 

maxL=100; 
var bName = navigator.appName; 
function taLimit(taObj) { 
    if (taObj.value.length==maxL) return false; 
    return true; 
} 

function taCount(taObj,Cnt) { 
    objCnt=createObject(Cnt); 
    objVal=taObj.value; 
    if (objVal.length>maxL) objVal=objVal.substring(0,maxL); 
    if (objCnt) { 
     if(bName == "Netscape"){  
      objCnt.textContent=maxL-objVal.length;} 
     else{objCnt.innerText=maxL-objVal.length;} 
    } 
    return true; 
} 
function createObject(objId) { 
    if (document.getElementById) return document.getElementById(objId); 
    else if (document.layers) return eval("document." + objId); 
    else if (document.all) return eval("document.all." + objId); 
    else return eval("document." + objId); 
} 
</script> 

だけIEに上記のすべての作品。 Firefoxでは、それはボックスにも焦点を当てません。

+0

注:最後の関数 "createObject"を呼び出すのは、あなたが何かを作成するのではなくむしろ「取得」するので、少し誤解を招くことです。 – scunliffe

+1

「ボックスに焦点を合わせない」という意味が分からないと、私はどこでもフォーカス()を呼び出すことはできません。それをクリックすると意味しますか?それにタブを押しますか? –

+0

私のために働く...エラーが他のどこかにあると思われる – Greg

答えて

10

いくつかのポインタ:

  • は、それが非推奨です、言語= "JavaScriptを" 使用しないでください。
  • プロパティアクセスにevalを使用しないでください。遅くて不要です。
  • プロパティ/メソッドの存在/コンプライアンスをチェックする(のinnerText /のTextContent)の代わりに、「ネットスケープ」を嗅ぐしないでください、それは誤解だ、「CREATEOBJECT」としての要素を受信するための方法に名前を付けないでください。
  • 宣言されていない割り当て(maxL = 100)を実行しないでください。エラーが発生しやすくなります。
  • コンベンションのためにコンストラクタ(または名前空間)ではない変数名を大文字にしないでください。
  • 名前の競合を避けるために、グローバルスコープで関数を宣言しないようにしてください。ここで
+0

良い点はほとんどありません。 –

+2

実際に "T.J. Crowder"は、 "Kangax"の最初のポインタを実装し、単にスクリプトオプションをtype = "text/javascript"に変更することで解決しました。適切に働く。助けてくれない場合は、投稿者をごみ箱に入れないでください。ありがとう "カンガル"! – Codex73

0

イベントハンドラの属性はすべて小文字です。 onKeyUpなどではなくonkeyupを試してみましたか?

+0

誰かが属性をすべて小文字にするために質問を編集したようです。 –

+0

これらの属性は、ブラウザによって異なる方法で解析されることはありません。これらはHTMLタグであり、大文字と小文字は区別されません。 onKeyPressとonKeyUpはjavascriptではなくhtml属性です。 – Codex73

+0

それはあなたが使用している 'DOCTYPE 'に依存します。あなたは、HTMLのdoctypesについてはかなり正しいです。 –

関連する問題