2009-04-03 8 views
2

ラベル>の中にチェックボックスがあります。このチェックボックスをオンまたはオフにすると、機能をトリガーします。 チェックボックスにonchangeトリガを付けましたが、IE6ではトリガはフォーカスがチェックボックスから外された後にのみ起動し、FF3とChromeではすぐに起動します。 私はのonchangeトリガーを削除し、<ラベル>にonclickのトリガーを取り付けたが、ラベルが一度クリックされたときに、今のトリガ火災は二回(enyoneはなぜ知らない?)...チェックボックスを機能させるにはどうすればいいですか?

私の質問は:どのように私は作ることができますチェックボックスは、そのボタンをクリックするか、そのラベルにチェックを入れたり、チェックを外したりすると機能を起動します。

ありがとうございました。あなたはおそらく、AutoPostBackプロパティをオンにする必要があり

答えて

6

うまくいくはずです。

(チェックボックスがチェックされているかどうかは異なるに基づいた機能振る舞いを持つようにしたい場合はもちろん、あなたが機能のチェックボックスの現在の状態を検査する必要があります。)

3

Electrons_Ahoy」として、 "と言うと、onclickハンドラをcheckbox要素にアタッチするだけで済みます。このハンドラは、ユーザがチェックボックスの代わりにラベルをクリックしたときにも呼び出される必要があります。

HTML:

<label><input type="checkbox" id="myCheckbox" />My Checkbox</label> 

JavaScriptは:

document.getElementById("myCheckbox").onclick = function() { 
    if (this.checked) { 
     alert("Checkbox was checked."); 
    } 
    else { 
     alert("Checkbox wasn't checked."); 
    } 
}; 

上記のコードは、Safariの4とFirefox 3(私はそれがIEでうまくいくかどうかはわかりません)で正しく動作するようです。

スティーブ

1

ないPrototypeを使用すると、あなたのためのオプションですが、あなたはそれをこのようにしてくださいもしそうなら(これは以前のバージョンに対して書かれた1.6コード若干異なりますプロトタイプを前提としています。)場合を確認します。

HTML:

<label><input type="checkbox" id="myCheckbox" />My Checkbox</label> 

JS:

$('myCheckbox').observe('click', function(cbox) 
    { 
     var cbox = $('myCheckbox'); 
     //do work in here. 
     //cbox is the DOM element that represents your checkbox 
    } 
); 

このようにすることは、「裸の」JSアプローチ(私の意見では)よりも少し上手で、やはり少し安全です。

1

ありがとうございました。

@Electrons_Ahoyと@Steve:あなたはタイトです。私の問題は、私はラボの中にチェックボックスを入れていたので、私はfolowingを行った: 私は、ラベルの外にチェックボックスを取った、チェックボックスにonclickトリガを置くと正常に動作します。

また、チェックボックスがラベルの内側にあり、onclickトリガーがラベルにあるときに、トリガーが2回発生した理由もわかりました。 ラベルをクリックすると、チェックボックスのクリックがシミュレートされ、クリックがラベル上でシミュレートされたラベル、duuuuuhhh :)

関連する問題