¿Alguien sabe de crossbrowser equivalente del parámetro de evento explicitOriginalTarget? Este parámetro es específico de Mozilla y me da el elemento que causó el desenfoque. Digamos que tengo una entrada de texto y un enlace en mi página. La entrada de texto tiene el foco. Si hago clic en el enlace, el evento de desenfoque de la entrada de texto me da el elemento de enlace en Firefox a través del parámetro explicitOriginalTarget.Equivalente de crossbrowser del parámetro de evento explicitOriginalTarget
Extiendo el método de Autocompleter.Base en Blur para no ocultar los resultados de búsqueda cuando el campo de búsqueda pierde el foco a los elementos dados. Por defecto, el método onBlur se oculta si el campo de búsqueda pierde el foco en cualquier elemento.
Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap(
function(origfunc, ev) {
var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode: ev.explicitOriginalTarget); // FIX: This works only in firefox because of event's explicitOriginalTarget property
var callOriginalFunction = true;
for (i = 0; i < obj.options.validEventElements.length; i++) {
if ($(obj.options.validEventElements[i])) {
if (newTargetElement.descendantOf($(obj.options.validEventElements[i])) == true || newTargetElement == $(obj.options.validEventElements[i])) {
callOriginalFunction = false;
break;
}
}
}
if (callOriginalFunction) {
return origFunc(ev);
}
}
);
new Ajax.Autocompleter("search-field", "search-results", 'getresults.php', { validEventElements: ['search-field','result-count'] });
Gracias.
Gracias Sergey. Tal vez debería comenzar a escribir mi propio método utilizando la delegación de eventos en lugar de intentar extender el método de Autocompletar de Blur. Con la delegación de eventos y el uso de algunas variables globales, puedo solucionar esto. – matte