2011-01-15 12 views
2

Ich habe eine Textarea. Was ich möchte ist, wenn der Benutzer in der Textfläche konzentriert ist, damit er auf 4em wächst, wenn der Benutzer nicht in der Textfläche fokussiert/unscharf ist, es auf den Standard 1em zurücksetzt.jQuery Ein Live-Fokus-Klick/Unschärfe-Ereignis

Hier ist, was ich bisher:

$('.comment_content').live('focus click', function() { 
    $(this).addClass('grow'); 
}).live('blur', function() { 
    $(this).removeClass('grow'); 
}); 

Damit war schön und gut, aber hier ist das Problem.

<textarea type="text" class="comment_content"> </textarea> 
<div id="attachfile">attach file</div> 

Die einzige Ausnahme, die ich auf die oben jQuery möchte, ist, dass, wenn der Benutzer eine Datei anhängen klickt dann die removeClass nicht ausgeführt werden soll: Ein Benutzer kann eine Datei auf einen Kommentar, so etwas wie befestigen.

Irgendwelche Ideen?

Dank

+0

Wie kann ich die ID des angeklickten Artikel erhalten, der die BLUR auslöst? – AnApprentice

Antwort

1

würde ich die removeClass Funktion in einem setTimeout Codeblock von etwa 500 Millisekunden gesetzt. Lassen Sie den Code nur auslösen, wenn das Element attachfile keine Klasse "active" aufweist. Fügen Sie dann dem Element attachfile einen Ereignishandler hinzu, der beim Klicken eine Klasse "active" hinzufügt.

$('.comment_content').live('focus click', function() { 
    $(this).addClass('grow'); 
}); 

$("body").live("click focus", function(evt) { 
    if (!$(evt.target).is('.grow, #attachfile')) 
     $('.comment_content').removeClass('grow'); 
}); 

-Update 16.01.11

Ein besseres Verständnis des Problems an diesem Morgen und hat folgendes jsFiddle erstellt. http://jsfiddle.net/uc8Qv/

Rich-

+0

Danke, Rich nicht sicher, ich folge, wie dies für meinen Anwendungsfall funktionieren würde. Würdest du bereit sein, ein Spiel zu machen? – AnApprentice

+0

Danke @mu, war letzte Nacht iPad. Keine Formatierungsoptionen – kim3er

+0

Dies scheint die Frage perfekt zu beantworten, und die Einbeziehung eines Spiels ist darüber hinaus. +1. @AnApprentice: Warum wurde die Antwort nicht akzeptiert? –