2010-12-11 16 views
0

Ich habe eine Seite mit mehreren Texteingaben und mehreren Tasten. Wenn ich auf eine Schaltfläche klicken mag ich der Wert dieser Schaltfläche am caret eingefügt werden, je nachdem, was Feld der Cursor in ist hier so weit mein Funktionsaufruf ist.jQuery: Finden Sie welche Textbox hat Caret/ist ausgewählt

$('li input[type="button"]').click(function(){$('#aTextInput').insertAtCaret($(this).val())}); 

I $('#aTextInput') mit dem Eingang ersetzt werden soll, die tatsächlich hat das Caret drin. Irgendwelche Ideen?

(. Here's die insertAtCaret Funktion, bevor jemand fragt Sie wahrscheinlich nicht Notwendigkeit, es zu betrachten, wenn Sie neugierig sind.)

Edit:

Also habe ich versucht, dies:

jQuery.extend(jQuery.expr[':'], { 
    focus: "a == document.activeElement" 
}); 

$('li input[type="button"]').click(function(){$('input:focus').insertAtCaret($(this).val())}); 

Aber wenn ich auf eine Schaltfläche klicke, passiert überhaupt nichts. Implementiere ich this solution falsch?

+0

http://stackoverflow.com/questions/2683742/is-there- a-has-focus-in-javascript-or-jquery/2683838 # 2683838 – charliegriefer

+0

Ich hatte das schon gesehen, aber ich kann es nicht zum Laufen bringen. Ich werde meine Frage bearbeiten, um zu zeigen, wie ich versucht habe, sie umzusetzen - vielleicht mache ich es einfach falsch. – user460847

Antwort

3

Wenn Sie mehrere Textareas haben, möchten Sie wahrscheinlich so etwas tun.

// any time a textarea gets focus, set the ID 
$('textarea').focus(function(){ 
    focusID = $(this).attr('id'); 
}); 

// when the button is clicked 
$('input[type="button"]').click(function(){  
    // insert the value into the textarea 
    insertAtCaret(focusID,$(this).val()) 
}); 

Check out my example on jsFiddle here

Das Problem, das ich hatte, war, wenn die Taste, um das Textfeld geklickt wird den Fokus verliert, so dass es schwer war, die Textarea zu finden, die zur Zeit wurde die Schaltfläche geklickt konzentrieren musste.

EDIT

ich nur realisiert werden Sie versuchen, dies zu tun, mit Eingängen, neuer jsFiddle hier: http://jsfiddle.net/tVNDL/1/

// any time a input gets focus, set the ID 
$('input').focus(function(){ 
    focusID = $(this).attr('id'); 
}); 

// when the button is clicked 
$('input[type="button"]').click(function(){  
    // insert the value into the textarea 
    insertAtCaret(focusID,$(this).val()) 
}); 
+0

Das ist perfekt! Vielen Dank! – user460847

+0

Sie wetten, ich könnte Ihnen helfen! :-) – jyoseph

Verwandte Themen