2011-02-09 33 views
7
<input class="jProblemClass" id="Checkbox{%= ID %}" type="checkbox" onchange="problemPicker.onChangeProblemCheckBox('{%=ID %}');"/> 

最初にチェックを入れるか、チェックを外しても何も起こりません。 Afetrの2番目のクリックは、私の関数problemPicker.onChangeProblemCheckBoxを呼び出しますが、私は最初にIDを取得します。どうして?誰にでも助けてくれますか?Html checkBox onchangeが動作しない

+1

私は、その機能が何をしているのかを表示したいかもしれません - おそらく問題はそこにあります... – Rob

答えて

19

ブロではなくのonchangeが..私が読んだJavaScript参照によると 理由は...、 フォーカス後のonchange火災が失われたのonclickイベントを使用します。他の場所をクリックしない限り、IEではフォーカスが失われません。 他のブラウザは、 を発火させる前に、フォーカスが失われるのを待ってはいけません。つまり、その時点で発砲するのに意味があるにもかかわらず、彼らはそのスペックに正しく従っていないことを示唆しています( )。代わりに onclickとonkeydown/onkeyupを使用する方法(onclickと onkeyup/onkeydownの両方を使用して、 のチェックボックスのマウスとキーボードの設定をカバーする) 参照:http://www.winvistatips.com/re-onchange-event-checkbox-not-working-properly-t311364.html

0

私は、問題はここから行くと思います:$('#CheckBox' + id).attr("checked") == true。したがって、このイベントが発生すると、は"checked"に設定する必要があります。だから、$('#CheckBox' + id).attr("checked") == "checked"$('#CheckBox' + id).attr("checked")のようなものを使ってみてください。

2番目のオプションとして、純粋なjqueryを使用してルーチンを実行することをお勧めします。あなたが<input type="checkbox" id="ac">チェックボックスを持っている場合たとえば、あなたはあなたのルーチンを処理するために、このJQコードを使用することができます。

$(document).ready(function() { 
    $("input[type=checkbox]").change(function() { 
     alert("Am i checked? - " + $(this).attr("checked") + "\nMy ID:" + $(this).attr("id")); 
    }); 
}); 

この場合はthis demoに示されています。

+0

'onchange'イベントを' onclick'に変更すると、すべて動作します。しかし、もし私がonchangeを使うのであれば、何も働かない。 – isxaker

+0

次に、onblurが起動するまでonchangeが起動しないことがあります。ボックスにチェックをした後、別の要素にフォーカスを設定してみてください。 –

+0

今私はそれをやろうとします。 – isxaker

0

代わりに、if($('#CheckBox' + id + ':checked').length > 0)を試してみてください。そうすれば、jQueryは、チェックボックスがcheckedであるかどうかを判断できます。 onChangeProblemCheckBoxは​​のいずれかの内部プロパティを使用していますが、完全なパスとそれらをreferensていない場合は、イベントが要素ではなく、problemPickerのコンテキスト内で発火するよう

また、すなわちproblemPicker.nnnnnは、それが失敗します。関数がこのように呼び出されたかのようになります$('#CheckBox' + id).onChangeProblemCheckBox()

関連する問題