Переместить курсор программно с одной страницы на другую, используя JavaScript - PullRequest
1 голос
/ 21 ноября 2008

У меня есть 2 страницы на экране (на самом деле больше, поскольку это своего рода проприетарное веб-приложение с несколькими фреймами, и я не могу понять всю структуру)

Я ввожу критерии поиска на странице, нажимаю клавишу «Ввод» на клавиатуре, поиск выполняется, а другое представление заполняется данными. На втором изображении есть кнопка «Подтвердить», и пользователь должен нажать на нее.

Мне бы хотелось, чтобы пользователь нажал «Enter» на клавиатуре и «Подтвердил» для выполнения.

Если я щелкаю поле в этом втором виде и нажимаю «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-й странице !!!

Почему это?

Конечно, это не решение, но мне интересно, почему использование предупреждений (но 2, а не 1) достигает моей цели - перемещать фокус мыши.

Спасибо

1 Ответ

1 голос
/ 21 ноября 2008

Я нашел способ заставить его работать

<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>

Любое объяснение этому?

Это работает на моем рабочем столе. Может ли быть так, что он не будет работать на других рабочих станциях (т.е. интервал должен быть выше)?

...