2010-12-30 5 views
4

Gmailの動作をチェックボックスでコピーしようとしていますが、範囲全体をクリックして別のアイテムをシフトクリックすると、その間のチェックボックスが変わります。複数のチェックボックスをGmailのようにチェック

しかし、FirefoxとChromeの間に互換性の問題があります。チェックボックスをクリックするとうまくいきますが、ラベルを何とかクリックすると、Shiftキーを押したときにFirefoxが変更を引き起こさないため、処理が非常に異なります。

You can check and test my code here.

明らかにFirefoxとラベルとのトラブルがあると、私はチェックボックスのchange()をトリガーしようとしましたが、それは逆方向のチェックボックスの動作を動作しますが、私はpreventDefault()とラベルのイベントを「リセット」試してみましたchange()イベントを起動して問題が同じように見えるが、今のところChromeにはというバグがある(これは何とか正しい方法だと思う、最初に同化する)。

簡単な方法はブラウザを検出することですが、すべてのWeb開発者は、ブラウザではなく問題を特定する方が良いと言います。また、indexOf()をサポートしていないため、IEでは動作しません。

ありがとうございます!

+1

Mozillaのドキュメント(https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility)の 'indexOf'の実装を使用して、持っている。 – bdukes

+0

オフトピック:ブラウザのこと以外にも、ロジックに問題があると思います。 Shiftキーを押しながら多くのランダムなクリックをした後、チェックボックスの動作が実際には意味をなさないことに気付き始めました。 –

+0

あなたが知っている通り、「クリック」イベントは変更イベントの代わりに行く方法です。私は、さまざまなブラウザが変更に関する問題を抱えていたことは間違いありません。 – Christian

答えて

1

Firefoxでテキストを強調表示するときに何らかの理由でタグの動作が異なっています。私はそれが失敗している理由は、シフトを押したままラベルをクリックするとボックスをチェックしないため、ラベル付きイベントが発生しないからです。 http://jsfiddle.net/xerf/Prxdn/10/

これは、両方のWebKitとFirefoxで動作します:

はこれをチェックしてください。タグをスパニングするようにラベルを変更しました。 CSSを少し使って、パディングを修正することができます。

関連する問題