[]

Textarea dışında yazı gönderme yolu var mı?

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  (22.01.12 08:29:19) 
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  (22.01.12 09:16:46) 
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  (22.01.12 09:28:04) 
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  (22.01.12 09:33:13 ~ 09:33:55) 
/*@'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  (22.01.12 09:42:27) 
@'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  (22.01.12 10:20:31) 
$(".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  (22.01.12 10:31:32) 
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  (22.01.12 10:36:42) 
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  (22.01.12 10:48:22) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.