В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Хм... В Firefox можно использовать explicitOriginalTarget
для получения по запросу элемента, на который нажали. Я ожидал toElement
делать то же для IE, но это, кажется, не работает... Однако можно вытянуть недавно сфокусированный элемент из документа:
function showBlur(ev)
{
var target = ev.explicitOriginalTarget||document.activeElement;
document.getElementById("focused").value =
target ? target.id||target.tagName||target : '';
}
...
<button id="btn1" onblur="showBlur(event)">Button 1</button>
<button id="btn2" onblur="showBlur(event)">Button 2</button>
<button id="btn3" onblur="showBlur(event)">Button 3</button>
<input id="focused" type="text" disabled="disabled" />
<час> Протест: Эта техника делает не работа для изменений фокуса, вызванных переключение вкладок через поля с клавиатурой, и не работает вообще в Chrome или Safari. Большая проблема с использованием activeElement
(кроме IE) состоит в том, что это последовательно не обновляется, до после blur
событие было обработано и не может иметь никакого допустимого значения вообще во время обработки! Это может быть смягчено с изменением на техника, которую Michiel закончил тем, что использовал :
function showBlur(ev)
{
// Use timeout to delay examination of activeElement until after blur/focus
// events have been processed.
setTimeout(function()
{
var target = document.activeElement;
document.getElementById("focused").value =
target ? target.id||target.tagName||target : '';
}, 1);
}
Это должно работать в большинстве современных браузеров (протестированный в Chrome, IE и Firefox), с протестом, что Chrome не устанавливает внимание на кнопки, которые являются , нажал (по сравнению с с вкладками к).
Можно использовать событие mousedown документа вместо размытия:
$(document).mousedown(function(){
if ($(event.target).attr("id") == "mySpan") {
// some process
}
});
Таким образом:
<script type="text/javascript">
function yourFunction(element) {
alert(element);
}
</script>
<input id="myinput" onblur="yourFunction(this)">
Или если Вы присоединяете слушателя через JavaScript (jQuery в этом примере):
var input = $('#myinput').blur(function() {
alert(this);
});
Редактирование : извините. Я неправильно читал вопрос.
Я предлагаю использовать глобальные переменные blurfrom и blurto. Затем настройте все элементы, о которых Вы заботитесь собирающийся присвоить их положение в DOM к переменной blurfrom, когда они теряют фокус. Кроме того, настройте их так, чтобы получение фокуса установило переменную blurto на их положение в DOM. Затем Вы могли использовать другую функцию в целом для анализа blurfrom и blurto данных.
я думаю, что это не possibe с IE, который можно попытаться использовать window.event.toElement
, но это, dosn't работают с Firefox!
Можно ли инвертировать то, что Вы проверяете и когда? Это - то, если Вы remeber, что было размыто в последний раз:
<input id="myInput" onblur="lastBlurred=this;"></input>
и затем в onClick для Вашего промежутка, вызовите функцию () с обоими объектами:
<span id="mySpan" onClick="function(lastBlurred, this);">Hello World</span>
Ваша функция могла тогда решить, инициировать ли Ajax. Управление AutoCompleter. Функция имеет нажатый объект и размытый объект. onBlur уже произошел так, он не заставит предложения исчезнуть.
Я также пытаюсь заставить Autocompleter проигнорировать размывание, если определенный нажатый элемент и имеет рабочее решение, но только для Firefox из-за explicitOriginalTarget
Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap(
function(origfunc, ev) {
if ($(this.options.ignoreBlurEventElement)) {
var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode : ev.explicitOriginalTarget);
if (!newTargetElement.descendantOf($(this.options.ignoreBlurEventElement))) {
return origfunc(ev);
}
}
}
);
Это значение по умолчанию оберток кода onBlur метод Autocompleter и проверки, если ignoreBlurEventElement параметры установлен. если это установлено, это проверяет каждый раз, чтобы видеть, является ли нажатый элемент ignoreBlurEventElement или нет. Если это, Autocompleter не делает cal onBlur, еще это называет onBlur. Единственная проблема с этим состоит в том, что это только работает в Firefox, потому что explicitOriginalTarget свойством является конкретный Mozilla. Теперь я пытаюсь найти различный путь, чем использование explicitOriginalTarget. Решение, которое Вы упомянули, требует, чтобы Вы добавили onclick поведение вручную к элементу. Если мне не может удаться решить проблему explicitOriginalTarget, я предполагаю, что буду следовать за Вашим решением.
Я решил его в конечном счете с тайм-аутом на onblur событии (благодаря совету друга, который не является StackOverflow):
<input id="myInput" onblur="setTimeout(function() {alert(clickSrc);},200);"></input>
<span onclick="clickSrc='mySpan';" id="mySpan">Hello World</span>
Работы и в FF и в IE.
Редактирование: А hacky способ сделать это должен был бы создать переменную, которая отслеживает фокус для каждого элемента, о котором Вы заботитесь. Так, если Вы заботитесь, что 'myInput' потерянный фокус, установите переменную на него на фокусе.
<script type="text/javascript">
var lastFocusedElement;
</script>
<input id="myInput" onFocus="lastFocusedElement=this;" />
Исходный Ответ: можно передать 'это' функции.
<input id="myInput" onblur="function(this){
var theId = this.id; // will be 'myInput'
}" />
имейте в виду, что решение с explicitOriginalTarget не работает для переходов текст-ввод-текст-ввод.
попробуйте заменить кнопки следующими текстовыми вводами, и вы получите увидеть разницу:
<input id="btn1" onblur="showBlur(event)" value="text1">
<input id="btn2" onblur="showBlur(event)" value="text2">
<input id="btn3" onblur="showBlur(event)" value="text3">