[Çözüldü] Javascript ile Metin Kutusuna Tarih Yazdırmak

Başlatan sudusleri, 20 Nisan 2010 - 13:05:46

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sudusleri

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..
Düşten yumak oldun... alıp gittin günahları...

utdmr

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.

sudusleri

Alıntı yapılan: utdemir - 20 Nisan 2010 - 13:09:15
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ı...

mce

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
<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>

sudusleri

Ç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ı...

mce

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.

sudusleri

teşekkür ederim.. bu kod üzerinde çalışacağım..
Düşten yumak oldun... alıp gittin günahları...

sarimura

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.

<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

sudusleri

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