1

画面に 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) のはなぜでしょうか。

ありがとう

4

1 に答える 1

1

私はそれを機能させる方法を見つけました

<SCRIPT FOR=window event=onload language="JScript">

function setFocus()
    {
    var focusField = "<%= controller->component_id %>" + '_' + 'CUSTOMER_STRUCT.BP_NUMBER';
    document.getElementById(focusField).focus();
    }

  window.setTimeout('setFocus()', 40);//1,10,20,30 do not work

</SCRIPT>

これについて何か説明はありますか?

それは私のデスクトップで動作します。他のワークステーションでは機能しない可能性がありますか(つまり、間隔を長くする必要があります)?

于 2008-11-21T00:29:35.673 に答える