1

イベントはonKeyUpIE(7) で動作し、Firefox(4.0.1) では動作しません。

onclick="eventName();" Javascript functionに属性を持つテキストフィールドがありますeventName(evt)。イベント データがありません。イベント データは Firefox から送信されません。一方、IEではwindow.eventISがいっぱいなので、ここでは機能します...

IEとFirefoxの両方が機能に問題なく到達します。唯一の問題は、そこにイベントデータが必要なことです。この厄介な問題の解決策を教えてくれる人はいますか?

例のページ:

<html>
<head>
    <script type="text/javascript">
        function upperCase(evt) { 
            if (evt) {
                var target = evt.target;
                target.value = target.value.toUpperCase();
            } else if (window.event) {
                var target = window.event.srcElement;
                target.value = target.value.toUpperCase();
            } else alert('No event information');
        }
    </script>
</head>
<body>
    <span>Enter your name: </span>
    <input type="text" id="fname" onkeyup="upperCase()" />
</body>
</html>
4

3 に答える 3

1

これをすべてのブラウザーでevent機能させるには、呼び出している関数に を渡します。

<input type="text" id="fname" onkeyup="upperCase(event)">

function upperCase(evt) { 
  if (evt) {
    var target = evt.target;
    target.value = target.value.toUpperCase();
  } else if (window.event) {
    var target = window.event.srcElement;
    target.value = target.value.toUpperCase();
  } else alert('No event information');
}
<input type="text" id="fname" onkeyup="upperCase(event)">

IE などの一部のブラウザでは、 が にevent解決されるため、これが機能window.eventします。これは、常に処理中の現在のイベントを参照します。他のブラウザー (Firefox など) ではevent、変数がイベント ハンドラーのスコープ内にあるため、これが機能します。onkeyup属性の内容は、次のような関数の本体であると想像できます。

function(event) {
    // Attribute value here
}
于 2011-06-08T08:15:55.967 に答える
1

IE はグローバルでイベントを処理します。イベントが関数の最初の引数として渡したその他すべて。

onkeyup="upperCase()"

あなたはそこに何もしません。あなたができるかどうかさえわかりません — 私は何年もの間、最も些細なおもちゃ以外の固有のイベント属性に触れていません.

与えられた

document.getElementById('fname').keyup = upperCase;

(または、より良いのは、attachEvent / addEvent を使用して、evt変数が設定されます。)

于 2011-06-08T07:00:19.133 に答える
0

実際にイベントをパラメーターとして渡すのを忘れました。次のようにする必要があります。

<input type="text" id="fname" onkeyup="upperCase(event)" />
于 2011-06-08T08:14:07.143 に答える