Одним из решений будет отслеживание ранее сфокусированного элемента input[type="input"]
с использованием document.querySelectorAll
через дополнительную переменную состояния (т. Е. lastFocus
, как показано ниже). Затем, когда вызывается autoFill()
, заполняется value
элемента lastFocus
, если он существует:
let lastFocus = ''
function autoFill() {
/* If a last focused input exists, populate it */
if (lastFocus) {
var input = document.querySelector('input:focus')
lastFocus.value += "only works with the first input";
}
}
/* Iterate each input element in document */
document.querySelectorAll('input[type="input"]').forEach(element => {
/* Add an "on focus" listener, which sets last focused input*/
element.addEventListener('focus', event => {
lastFocus = element;
});
});
<input type="input">
<button type="button" onclick="autoFill()">fill it!</button>
<input type="input">
Надеюсь, это поможет!
Похоже, что нет решения этой проблемы. Microsoft признала эту ошибку, но она все еще не исправлена в SSRS2008.
Из статьи базы знаний ( http://support.microsoft.com/kb/938943 )
Это происходит потому, что Подотчетный контроль имеет неявный Свойство KeepTogether. По дизайну Свойство KeepTogether пытается сохранить содержание подотчета на одной странице. Из-за этого поведения отчет двигатель создает пустое пространство на главной сообщить, если подотчет не подходит на той же странице, что и основной отчет. Затем механизм отчетов создает вложенный отчет на новой странице.
Обход, который они перечисляют, по сути, «не используйте вложенные отчеты»
Еще один способ обойти эту проблему - поместить вложенный отчет в заголовок отчета. Конечно, это очень зависит от содержания отчета и исключает любую полезность последующих разделов, но это решило мою проблему наличия огромного количества пробелов на первой странице.