Javascript kullanarak değişken adı ile bir textarea içinde odak koydu

2 Cevap php

Ben birkaç etkinlik düzenleyecek listeleyen bir site var, ve her olay yorum bırakmak için bir açıklama düğmesi vardır. (Bunu İsveçli öyle, ama yapısını anlamaya düşünüyorum) bu gibi görünüyor:

Yorum yazmak için textarea içeren div başlangıçta gizli, ve 'comment'-simgesini tıklatarak zaman aşağıdaki javascript kullanılarak görüntülenir:

<script language="javascript" type='text/javascript'>
	function showhide_comment(comment_id, change_id) {
		if (document.getElementById(comment_id).style.display == 'none') { 
			if (document.getElementById(change_id).style.display == 'block') {
				document.getElementById(change_id).style.display = 'none';
				document.getElementById(comment_id).style.display = 'block';
				document.getElementById(change_id).style.display = 'block';
			} else {
				document.getElementById(comment_id).style.display = 'block';
			}
		} else {
			if (document.getElementById(change_id).style.display == 'block') {
				document.getElementById(change_id).style.display = 'none';
				document.getElementById(comment_id).style.display = 'none';
				document.getElementById(change_id).style.display = 'block';
			} else {
				document.getElementById(comment_id).style.display = 'none';
			}
		}	
	}

Komut olay yapılabilir değişiklikleri bir başka (başlangıçta gizli) div de görüntülendiğinde IE doğru gizli div görüntülemek için bir hack içerir. Ama boşver.

Yorum formunu görüntülemek için php-kod şöyle görünür:

//Comment form, initially hidden
			echo "<div id=\"comment" . $row->id . "\" class=\"submit-comment\" style=\"display: none\">";
			echo "<form name=\"make_comment\" method=\"post\" action=\"submit_comment.php\">";
			echo "Kommentar:<br/>";
			echo "<textarea name=\"comment\" class=\"comment\" rows=\"0\" cols=\"0\"></textarea><br/>";
			echo "<input type=\"hidden\" name=\"event_id\" value=\"$row->id\"/>";
			echo "<input class=\"comment\" type=\"submit\" name=\"submit_comment\" value=\"Skicka\" />";
			echo "</form>";
			echo "</div>";

Bu kod bir mySQL veritabanında saklanan tüm etkinlik düzenleyecek görüntüleyen bir döngü içinde yatıyor. Görüldüğü gibi, divs doğru olay için yorum bağlamak amacıyla, vb comment1, comment2 gibi değişken isimleri verilmiştir.

Bu açıklama-simgesini ve javascript bağlayarak görüntülemek için kod:

echo "<li class=\"icon-left\">
			<a href=\"javascript:showhide_comment('comment" . $row->id . "', 'change" . $row->id . "')\">
			<img src=\"images/comment-24x24.png\" title=\"Kommentera körning\" alt=\"Kommentera körning\" />
			</a></li>";

Ne yapmak istiyorum kullanıcı doğrudan yazmaya başlayabilirsiniz böylece comment-simgesi tıklandığında görünür hale doğru textarea alanı içinde odak koymaktır. I odak () kullanarak yukarıdaki javascript değiştirmeye çalıştık, ama ben sadece o iş için alınamıyor. Herhangi Ben istediğimi elde edebilirsiniz nasıl fikir?

Teşekkürler.

/ Linus

2 Cevap

Bu ne istediğiniz div, ilk textarea durulacak:

document.getElementById(comment_id).getElementsByTagName('textarea')[0].focus();

Formu gösteren için javascript işlevi:

 if (document.getElementById(comment_id).style.display == 'none') { 
                        if (document.getElementById(change_id).style.display == 'block') {
                                document.getElementById(change_id).style.display = 'none';
                                document.getElementById(comment_id).style.display = 'block';
                                document.getElementById(change_id).style.display = 'block';
                                document.getElementById(comment_id).focus(); //This will set the focus

I comment_id Yorumlarınız için textarea için kimliği olacağını burada tahmin ediyorum. Değilse, içinde document.getElementById(); son satırında textarea id kullanılır.