can.js を使用しているページがあるため、jsfiddle.net で再現するのは困難ですが、最終結果は次のようになります。
チェックボックス (またはラジオ ボタン) をクリックすると、別のinput
テキスト ボックスがクリックによる変更を更新します。(たとえば、テキスト ボックスには「青」と表示されます)。
ただし、Firebug のコンソールまたは Chrome の開発者ツール コンソール内で jQuery を使用してプログラムで実行すると、次のようになります。
$("#some-form input:eq(3)").trigger("click");
また
$("#some-form input:eq(3)").click();
Webページのチェックボックスは実際にチェックされますが、input
テキストボックスの値は以前のように「青」に更新されません。
したがって、コードを使用してチェックボックスをクリックするユーザーをさらに厳密にエミュレートするために、次のことを試しました。
$("#some-form input:eq(3)").trigger("focus");
$("#some-form input:eq(3)").trigger("mousedown");
$("#some-form input:eq(3)").trigger("mouseup");
$("#some-form input:eq(3)").trigger("click");
$("#some-form input:eq(3)").trigger("change");
ただし、上記のすべてを合わせても、チェックボックスを手動でクリックするユーザーをエミュレートすることはできません。
can.js コードが can.compute() または can.Observe() を使用してそのinput
テキスト ボックスを更新していたのは複雑な場合がありますが、重要なのは、ラジオまたはチェックボックスを手動でクリックするユーザーが機能するかどうかです。なぜプログラムではないのですか。言い換えれば、実際の物理的なクリックとほとんど同じことをプログラムで行うにはどうすればよいでしょうか? おそらく見逃したイベントはありますか?
(詳細: これは最新の Firefox と Chrome で試行されているため、ブラウザーの問題ではないはずです。また、最初にフォーカスを試みてから、SPACE 文字でキーダウン イベントをトリガーしても効果はありません。 . さらに奇妙なのは、クリックを 2 回トリガーすると、input
テキスト ボックスに実際に「青」への更新が表示されるので、なぜ 2 回かということです)。