2011-01-04 7 views
1

私はフォームとそのフォームのonloadを持っていると言う2つのラジオボタンは "はい"か "いいえ"と言われます 私はどちらかを選択すると、 1つのラジオボタン.Say我々はどのようにJqueryのチェックされたイベントとクリックされたイベントの両方を扱うか

//Onload of Form 
if(("#yes:checked")){ 
$("#table").show(); 
$("#div1").show(); 
$("#div2").show(); 
alert("Checkedd on Load"); 
} 

//クリック

​​

Iamの執筆、イベントの2つの類似した一連のコードの同じ繰り返し行のために、「はい」を選択した場合は、組み合わせることがとにかくあり.Is "チェックされた"と "クリックされた"イベント 私はこの方法で "チェックされていません "というメッセージが表示されるまで"クリック "されませんでしたか?

$("#yes").bind('click',function(){ 
if(("#yes:checked")){ 
$("#table").show(); 
$("#div1").show(); 
$("#div2").show(); 
alert("Checked by Click"); 
} 
}); 
}); 

答えて

3

あなたは正確に同じコードを実行したい場合はあなたが実際に

switch(e.type) { 
    case 'click': { 
     break; 
    } 
    case 'change': { 
     break; 
    } 
} 

をトリガしたイベントを決定するためにevent objectを検索することができます.bind()

$('#yes').bind('click change', function(e) { 
}); 

のように複数のイベントを組み合わせることができますこれらのイベントでは、最初の breakステートメントをスキップできます。とにかく、あなたの特別なケースでは、あなたは changeイベントが必要だと思っています。

if(this.checked) { 
} 
else { 
} 

サイトをロードする際のEventHandlerのコードを実行するには、.trigger()それ

$('#yes').bind('click change', function(e) { 
}).trigger('change'); 
+0

。すごい仕事。 +1 –

+0

Iamこれまで以上にあなたが言ったことから働くことができませんhttp://jsfiddle.net/XK6y7/ – Someone

+0

私はコメントを2番目にします。非常にエレガント。このようにすることができるとは気付かなかった。 jQueryは私を驚かせ続けます。 – JasCav

0
if(("#yes:checked")){ 
    processCheck(); 
    alert("Checked on Load"); 
} 
$("#yes").bind('click',function(){ 
    processCheck() 
    alert("Checked by Click"); }); 
}); 

function processCheck() { 
    $("#table").show(); 
    $("#div1").show(); 
    $("#div2").show(); 
} 

のようなそのようにすることができます:あなたのイベントハンドラでは、あなただけの要素が現在チェックされているかどうか確認してください一度コードを定義して複数回呼び出すことができます:)

アラートを関数に書き込んで、希望の文字列を与えることもできます。

function processCheck(msgStr) { 
    $("#table").show(); 
    $("#div1").show(); 
    $("#div2").show(); 
    alert(msgStr); 
} 

と役立ちます:)

0

をそれを達成する方法の1つは、すべて共通の操作を行います関数を作成して、ときにこの関数を呼び出すことですprocessCheck("Checked on Load");

希望のようなものを呼び出しますイベントが発生します。何でも私が思い付くことができることWAYよりelegentです

function show_stuff() { 
    $("#table").show(); 
    $("#div1").show(); 
    $("#div2").show(); 
    alert("Checked by Click"); 
} 

$("#yes").bind('click',function(){ 
    show_stuff(); 
    }); 
関連する問題