Gönderen Konu: [Çözüldü] Javascript ile Metin Kutusuna Tarih Yazdırmak  (Okunma sayısı 5119 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Geliştirmekte olduğum PHP tabanlı bir yazılım için şu tür bir koda ihtiyacım var.
Elimde 4 tane metin kutusu var. İlk kutuya elle bir tarih gireceğim (YYYY-AA-GG) olacak şekilde. Diğer üç kutuya bu tarihi her bir kutuya dört ay arttırarak otomatik olarak yazdırmak istiyorum sayfa yenilemeden yada bir buton yardımı ile..

Ör:

Kutu 1: 2010-01-01 (Elle girilecek)

Kutu 2: 2010-04-01
Kutu 3: 2010-08-01
Kutu 4: 2010-12-01

Bu sanırım javascript ile yapılabilir (Başka çözümlere de açığım).

Yardımcı olabilecek arkadaşlara şimdiden teşekkürler..
« Son Düzenleme: 22 Nisan 2010 - 21:03:43 Gönderen: bytan »
Düşten yumak oldun... alıp gittin günahları...

« Yanıtla #1 : »
Ajax daha çok sunucu-istemci arasında işlemler için kullanılır, dediğiniz işlemin yapılması JavaScript. JavaScript yazdığınız anda güncelleyebilir diğer kutuları, ancak kod hakkında yardımcı olamam...
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

« Yanıtla #2 : »
Ajax daha çok sunucu-istemci arasında işlemler için kullanılır, dediğiniz işlemin yapılması JavaScript. JavaScript yazdığınız anda güncelleyebilir diğer kutuları, ancak kod hakkında yardımcı olamam...

Teşekkür ederim.. düzeltiyorum.
Düşten yumak oldun... alıp gittin günahları...

« Yanıtla #3 : »
Javascript bilmiyorum aslında ama w3schools'u karıştırarak bir şeyler yaptım. İşinize yarar umarım.

Java ile Javascript çok farklı şeyler olduğu için konunun yeri de burası değil ayrıca
Kod: [Seç]
<html>
<head>
<title>Jscript</title>
<script type="text/javascript">
function oto() {
  //Girilen tarihi oku
  var tarih = document.getElementsByName("tarih")[0].value;
  var yil = parseInt(tarih.substring(0, 4));
  var ay = parseInt(tarih.substring(5, 7));
  var gun = parseInt(tarih.substring(8, 10));
 
  //Her bir kutuya tarihi 4 ay arttırarak yazdırır.
  for(var i=0; i<3; i++) {
    ay = ay + 4;
if(ay > 12) {
   ay = ay % 12;
   yil++;
}
var s = yil + "-" + ay + "-" + gun;
document.getElementsByName("tarih")[i+1].value = s;
  }
}
</script>
</head>
<body>
Tarih: <input type="text" name="tarih" onblur=oto() /></br>
Tarih: <input type="text" name="tarih" /></br>
Tarih: <input type="text" name="tarih" /></br>
Tarih: <input type="text" name="tarih" />
</body>
</html>

« Yanıtla #4 : »
Çok teşekkür ederim... tam istediğim gibi ancak ufak bir detay var...

Arttırdığı tarihlerde tek basamaklı gün ve ay hanelerinde rakamın önüne sıfır koymuyor.. Sıfırı da koysa mükemmel olur benim için..
ayrıca metin kutularının name="tarih" değeri hepsinde sabit olduğu için veritabanına kayıt işleminde sorun çıkartır diye düşünüyorum..

Düşten yumak oldun... alıp gittin günahları...

« Yanıtla #5 : »
Biraz uğraştım ama fazla bilgim olmadığı için yapamadım. Kusura bakmayın.
"tarih" değerini javascript için kolaylık olsun diye verdim, değiştirince javascript kodu biraz daha karışıyordu. Daha kolay bir yol var mıdır bilemiyorum.  Hepsine farklı id değeri verirseniz işiniz olur herhalde. Web programlama ile çok ilgim yok yanlış da bilgi vermek istemem.

« Yanıtla #6 : »
teşekkür ederim.. bu kod üzerinde çalışacağım..
Düşten yumak oldun... alıp gittin günahları...

« Yanıtla #7 : »
Yukarda verilen kod üzerinde çok değişiklik yapmadan bir fonksiyon yazarak güncelledim. Tabi istediğiniz işi yapmak için bir dolu yöntem var. Aşağıdaki sanırım istediğinizi yapıyor. İstediğiniz şekilde uzunluğunu değiştireblirsiniz.

Tavsiyem biraz "regex" kurcalamanızdır. Google amcaya "javascript regex" sorarak güzel fikirler edinebilirsiniz.

İyi çalışmalar.

Kod: [Seç]
<html>
<head>
<title>Jscript</title>
<script type="text/javascript">
function oto() {
  //Girilen tarihi oku
  var tarih = document.getElementsByName("tarih")[0].value;
  var yil = parseInt(tarih.substring(0, 4));
  var ay = parseInt(tarih.substring(5, 7));
  var gun = parseInt(tarih.substring(8, 10));
 
  for(var i=0; i<3; i++) {
    ay = ay + 4;
if(ay > 12) {
   ay = ay % 12;
   yil++;
}
var s = yil + "-" + sayiDuzenle(ay, 2) + "-" + sayiDuzenle(gun, 2);
document.getElementsByName("tarih")[i+1].value = s;
  }

  function sayiDuzenle(sayi, uzunluk) {
    var r = "" + sayi;
    while (r.length < uzunluk) {
        r = "0" + r;
    }
    return r;
  }
}
</script>
</head>
<body>
Tarih: <input type="text" name="tarih" onblur=oto() /></br>
Tarih: <input type="text" name="tarih" /></br>
Tarih: <input type="text" name="tarih" /></br>
Tarih: <input type="text" name="tarih" />
</body>
</html>
^_sarimura_^

LKD Üye #1038  | Linux Counter #501234 | Ubuntu Counter #29905

« Yanıtla #8 : »
Teşekkür ederim.. Çok faydalı oldu..
Düşten yumak oldun... alıp gittin günahları...