2010-12-22 2 views
0

Ich habe den folgenden HTML-Code (die in mehreren Dateien abgelegt wird), die in einem Textfeld einen ausgewählten/geklickt Smiley fügt:JavaScript Smiley-Funktion nicht den Smiley innerhalb der entsprechenden Textarea platzieren?

<a href="javascript:insertTheSmiley(':)');void(0)"><img src="images/smile.gif" alt=":)" title=":)" /></a> 

<!-- this is a link to open a popup listing all smilies (see smilies.html to see what it contains) --> 
<a href="#" onClick="window.open('smilies.html', 'Smilies', 'width=250,height=500,scrollbars=1');">Show all smilies</a> 

<textarea id="textarea" cols="60" rows="10" style="width: 100%"></textarea> 

<a href="javascript:insertTheSmiley(':)');void(0)"><img src="images/smile.gif" alt=":)" title=":)" /></a> 

<!-- this is a link to open a popup listing all smilies (see smilies.html to see what it contains) --> 
<a href="#" onClick="window.open('smilies.html', 'Smilies', 'width=250,height=500,scrollbars=1');">Show all smilies</a> 

<textarea id="textarea" cols="60" rows="10" style="width: 100%"></textarea> 

Die smilies.html den folgenden HTML enthält:

<a href="javascript:putTheSmiley(':)');void(0)"><img src="images/smile.gif" alt=":)" title=":)" /></a> 

und die verwendeten JavaScript-Funktionen sind:

<script> 
function insertTheSmiley(input) { 
document.getElementById('textarea').value += input; 
} 

function putTheSmiley(input) { 
window.opener.insertTheSmiley(input); 
} 
</script> 

Was ich beabsichtige, denn es ist der ausgewählte/geklickt smiley in den entsprechenden statt zu tun Textarea, derzeit (als Beispiel) wenn ich auf den zweiten Smiley - Link klicke (sowie in die smilies.html), plaziert es den Smiley innerhalb des ersten Textfelds, aber ich möchte, dass es innerhalb des zweiten eingefügt wird (was ist das? beachte das Passende) - das ist nur ein Beispiel, um mein Problem zu veranschaulichen.

Ich vermute es ist ein Problem mit der Element-ID, ist ihre Art, dies zu automatisieren oder eine Abhilfe, wie ich viele Forum-Software dies tun gesehen habe?

Heres ein Gedanke (die nicht zu funktionieren scheinen):

<script> 
function insertTheSmiley(input, id) { 
global id; 
document.getElementById(id).value += input; 
} 

function putTheSmiley(input) { 
global id; 
window.opener.insertTheSmiley(input, id); 
} 
</script> 

Antwort

0

Zunächst einmal gibt verschiedene ID zu jedem Textfeld .., die sowohl mit der gleichen ID ist schlecht und falsch.

Zweitens, beim Aufruf der Funktion der ID des gewünschten Textbereiches passieren:

href="javascript:insertTheSmiley(':)', 'MySecondTextarea');void(0)" 

Und schließlich in der Funktion insertTheSmiley den Code zu ändern, um die ID der Funktionsparameter anstelle der Art und Weise ist es jetzt zu bekommen - Beitrag der Code der Funktion, wenn Sie Hilfe benötigen.

+0

Vielen Dank für die Antwort, ich habe die insertTheSmiley() -Funktion bearbeitet, und es in meine erste Frage aufgenommen, könnten Sie nehmen Sie an, was ich falsch gemacht habe? – Newbtophp

+0

@Newbtophp: loswerden der 'globalen ID;' in der Funktion. –

0

Ihre Textfelder müssen unterschiedliche IDs haben. Sie könnten dann die entsprechende ID an die Methode insertTheSmiley(input) übergeben.

+0

Vielen Dank für die Antwort, ich habe die insertTheSmiley() -Funktion bearbeitet, und es in meine erste Frage aufgenommen, könnten Sie sich vorstellen, was ich falsch gemacht habe? – Newbtophp

Verwandte Themen