| 

.NET C# Java Javascript Exception

3
Hallo liebe Leute,

ich hab ein warscheinlich sehr simples Problem und seh nur den Wald vor lauter Bäumen nicht.

Ich hab eine einfache HTML Tabelle, in der die Zellen mit Textareas gefüllt sind.
Im Prinzip so:
<table>
<tr>
<td><textarea>Lalala</textarea></td>
<td><textarea>Lululu</textarea></td>
</tr>
<tr>
<td><textarea>lilili</textarea></td>
<td><textarea>lelele</textarea></td>
</tr>
</table>

Jetzt möchte ich ein Event schmeißen, wenn der Focus die Reihe verlässt. Z.B. von "Lalala" zu "Lilili" oder ganz woanders hin, aber nicht wenn er in der Reihe bleibt. Z.B. von "Lalala" zu "Lululu".

Ich habe Probiert es folgendermaßen umzusetzen:
$("tr").focusout(function (e) {
console.log(e);
});

Dass Problem ist, dass er das Event so einfach immer schmeißt, auch wenn ich in der Reihe bleibe. Ich finde auch kein anderes passendes Event und "e" kann mir nur sagen, wer den Focus verloren hat und nicht wer den neuen bekommt.

Also, hat jemand eine Idee, wie ich Prüfen kann ob ich noch in der richtigen Reihe bin?
04.03.2014
DerPunk 1,2k 1 7
2 Antworten
2
Ist gerade so aus dem Kopf entstanden aber es sollte in etwa so gehen, das du schaust ob ein anderes Element der selben TR den FOCUS hat.

if (!$(e).parent('TR').has(":focus")) {
//....
}

//:focus nachrüsten falls es fehlt
(function ( $ ) {
var filters = $.expr[":"];
if ( !filters.focus ) {
filters.focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
}
})( jQuery );
04.03.2014
Floyd 14,6k 3 9
Die Lösung hatte ich auch schon im Kopf, aber "e" ist ja das Element aus dem ich komme und nicht das was ich angeklickt habe.
DerPunk 04.03.2014
Eben .. e zeigt auf das element in der alten TR. jetzt kannst du prüfen ob ein anderes element in der selben tr den focus bekommen hat.
Floyd 04.03.2014
Achso, das müsste natürlich klappen :)
DerPunk 04.03.2014
1
Ich hab da mal eine sehr provisorische Lösung zusammen geschustert:

var lostEle = $("body")[0];
$("tr").focusout(function (e) {
lostEle = e.target;
});
$("body").focusin(function (e) {
if (e.target.parentElement.parentElement == lostEle.parentElement.parentElement) {
console.log("Geht nicht klar!");
} else {
console.log("Geht klar!");
}
});

Für Verbesserungsvorschläge wär ich trotzdem dankbar.
04.03.2014
DerPunk 1,2k 1 7

Stelle deine Javascript-Frage jetzt!