画面に 2 つのページがあります (実際には、フレームがいくつかある独自の Web アプリケーションのようなものであり、全体の構造を実際に把握することはできません)。
ページに検索条件を入力し、キーボードの [Enter] を押すと、検索が実行され、他のビューにデータが入力されます。この 2 番目のビューには「確認」ボタンがあり、ユーザーはそれをクリックする必要があります。
ユーザーにキーボードの「Enter」を押して「確認」を実行してもらいたいです。
この 2 番目のビューのフィールドをクリックして [Enter] を押すと、[確認] が実行されるので、マウスのフォーカスを最初のページから別のページに移動するだけです。
プログラムでこれを達成するにはどうすればよいですか?
私は次のことを試しました
<SCRIPT FOR=window event=onload language="JScript">
var focusField = "<%= controller->component_id %>" + '_' + 'NUMBER';
document.getElementById(focusField).focus();
</SCRIPT>
最初のページの入力フィールドにまだカーソルがあります。
<SCRIPT FOR=window event=onload language="JScript">
var focusField = "<%= controller->component_id %>" + '_' + 'NUMBER';
alert(document.getElementById(focusField).value);
document.getElementById(focusField).focus();
</SCRIPT>
フィールドの値が表示されるので、コードはそこを通過します
最初のページの入力フィールドにカーソルが残っている
<SCRIPT FOR=window event=onload language="JScript">
var focusField = "<%= controller->component_id %>" + '_' + 'NUMBER';
document.getElementById(focusField).focus();
alert('1');
alert('2');
</SCRIPT>
最初のページの入力フィールドにカーソルが残っている
<SCRIPT FOR=window event=onload language="JScript">
var focusField = "<%= controller->component_id %>" + '_' + 'NUMBER';
alert('1');
document.getElementById(focusField).focus();
alert('2');
</SCRIPT>
そして、カーソルは何とか「奇跡的に」入力フィールドから「移動」し、「Enter」は2ページ目で機能します!!!
なぜですか?
もちろん、それは解決策ではありませんが、マウスのフォーカスを移動するという私の目的を達成するためにアラートを使用する (ただし、1 ではなく 2) のはなぜでしょうか。
ありがとう