arkadaşlar, @ ile kullanıcı etiketleme gibi bir sistem hazırladım online derslerden yardım alarak. ancak sorunum şu ki; bu sistem textarea ile çalışmıyor. bunu hazırladığım div'de kullanıncaysa yazıyı gönderemiyorum.

nasıl bir çare bulabilirim acaba? (pek iyi değilim bu işlerde ama öğrenmeye çalışıyorum, o yüzden azıcık açıklayaran söylerseniz yapabileceklerimi çok sevinirim)


 

aslında sen biraz açıklarsan ne istediğini belki daha rahat yardımcı olunabilir.

ensar

javascript ile @ ile kullanıcı etiketleme işi yaptım. (hani şu facebook'ta başına @ koyup adını yazmaya başlayınca isimler liste halidne çıkıyor ya o işte)

ancak bu yalnızca tanımladığım divlerin arasında çalışıyor. yani textarea'ya bu div'in class'ını atasam bile @ ile etiketleme çalışmıyor textarea'da.

dolayısıyla div'e yazdırdığım yazıyı mysql'e gönderebilmem lazım, textarea ile çalıştıramadığım için.

tchuck

div de çalışıyor textarea da çalışmıyosa; fonksiyona doğru veri gitmiyo olabilir.

şöyle olsa bir kısmı, div arasındaki veriyi alıyo olsa bir şekilde (eğer input yoksa yani bu iki div arasında @ ve devamını girdiğin yerde)

$('divinidsi').text() ile alıyodur veriyi.

textarea da bu giden veriyi ancak

$('textareaninidsi').val()

ile alabilirsin. ne html ne javascript kodunu göremediğim için tahmin edebiliyorum ancak, onları yazarsan daha rahat bir şey söylenebilir.

ensar

dosya1: index.php (dosyanın içindeki javascript bölümüne yazdım haliyle bu kodu.

html:

<div id="konu_ekle">
<div class="sol_bas">Konu ekleme</div>
<form action="" method="post">
<span>Konu İçerik:</span>
<span><div id="yaziekrani" contenteditable="True">Bir isim girin</div></span>
<div id="sonuc"></div>
<span><input type="submit" value="Konuyu Ekle" class="giris_btn" style="float:right;"/></span>
</form>
</div>
--------------------------------
---------------------------------------------------------------------
$(document).ready(function(){

/*ÜSTÜNE TIKLAYINCA SİLME*/
$("#yaziekrani").click(function(){
if($(this).html()=="Takım ya da Lig İsmi Yazın"){
$(this).empty();
}
});
/*ÜSTÜNE TIKLAYINCA SİLME*/


/*@'LE ARAMA*/
var kelime = /@(\w+)/ig;
$("#yaziekrani").live("keyup",function(){
var icerik = $(this).html();
var isim = icerik.match(kelime);
var deger = "isim="+isim;

if(isim.length > 0){
$.ajax({
type: "POST",
url: "kontrolet.php",
data: deger,
success: function(e){
if (e == "yok"){
$("#sonuc").fadeOut();
}else {
$("#sonuc").html(e).fadeIn();
}



}
});
}
});

$(".ekle").live("click", function(){
var takimlar = $(this).attr("title");
var icerik = $("#yaziekrani").html();
var a = '<a href="#" contenteditable="false" class="takim">'+takimlar+'</a>';
var deger = icerik.replace(kelime,a);
$("#yaziekrani").html(deger);
$("#sonuc").fadeOut();
});
/*@'LE ARAMA*/
});
-------------------------------------------------------------------

kodun çalışmasını sağlayan kontrolet.php:
--------------------------------------------------------------------
<?php


$con = mysql_connect("localhost","root",);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("mydb", $con);

mysql_query("SET CHARACTER SET Latin5");

header("content-type: text/html; charset=iso-8859-9");

$deger = iconv("UTF-8", "ISO-8859-9", $_POST["isim"]);
$deger = explode("@",$deger);
$kBul = mysql_query("select * from takimlar where takimlar like '$deger[1]%' order by takimlar limit 5");

$kSay = mysql_num_rows($kBul);
if ($kSay > 0){
echo '<ul id="liste">';
while ($kGoster = mysql_fetch_array($kBul)){
echo '<li><a href="javascript:;" title="'.$kGoster["takimlar"].'" class="ekle">'.$kGoster["takimlar"].'</a></li>';
}echo '</ul>';
}else{
echo "yok";
}
?>
--------------------------------------------------------------------

tchuck

/*@'LE ARAMA*/
var kelime = /@(\w+)/ig;
$("#yaziekrani").live("keyup",function(){
var icerik = $(this).html();
var isim = icerik.match(kelime);
var deger = "isim="+isim;

kısmını değiştirmen gerek

<span><div id="yaziekrani" contenteditable="True">Bir isim girin</div></span>

yerine mesela:
<textarea id="yaziekrani">Bir isim girin</textarea>

yazsak, kodu şu şekilde değiştirmemiz lazım:

/*@'LE ARAMA*/
var kelime = /@(\w+)/ig;
$("#yaziekrani").live("keyup",function(){
var icerik = $(this).val(); // $(this).html(); yerine bu düzeltilecek
var isim = icerik.match(kelime);
var deger = "isim="+isim;

ensar

@'le aramanın son bölümündeki

var icerik = $("#yaziekrani").html();

ve

$("#yaziekrani").html(deger);

satırlarındaki html'leri de val ile değiştirdim. bu şekilde değiştirince, aşağıdaki listeden istediğim ismi seçtiğimde ekranıma " <a href="#" contenteditable="false" class="takim">Macclesfield</a>" olarak yazdırıyor direk. sadece Macclesfield'ı ekrana getirtip yönlendirme nasıl yapabilirim ki?

val'ler html halindeyken dediğim şekilde oluyor. (javascriptte de hakikaten baya kötüyüm, yine php'de falan biraz yol katettim ama...)

tchuck

$(".ekle").live("click", function(){
var takimlar = $(this).attr("title");
var icerik = $("#yaziekrani").html();
var a = '<a href="#" contenteditable="false" class="takim">'+takimlar+'</a>';
var deger = icerik.replace(kelime,a);
$("#yaziekrani").html(deger);
$("#sonuc").fadeOut();

satırlarında

var a = '<a href="#" contenteditable="false" class="takim">'+takimlar+'</a>';

satırını


var a = takimlar;

olarak değiştirmen lazım gibi.

ensar

hımmm anladım. yav başına da ekşimiş oldum gerçi ama, <a href'li bir şekilde koyma ihtimalimiz yok mudur ki. isim kısmına yönlendirme linki koyabiliyor olsam süper olurdu.

(bu arada oturmuş yerimde senden cevap bekliyorum sanma :) sürekli araştırıyorum, tutorialleri falan izliyorum, yapamadıklarımı sormak zorunda kalıyorum. pek iyi değilim bu konuda ama öğreniyorum bir şeyler :) )

tchuck

textarea içerisinde html tag i kullanmak çok uzun iş, textarea ya yerleştirmek yerine ama çıkan listede bir öğeye tıklandığında yönlendirme yapabilirsin:

$(".ekle").live("click", function(){
var takimlar = $(this).attr("title");
top.top.location.href='takimsayfasi.php?takim='+takimlar;
$("#sonuc").fadeOut();
});

gibi bir kodla.

ensar
1

mobil görünümden çık