Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

JavaScript prompt nedir?​


JavaScript'teki prompt(), kullanıcıdan kısa bir metin almak için tarayıcıda yerleşik bir iletişim kutusu açan fonksiyondur. Kullanıcı bir değer girip onaylarsa girilen metni, İptal'e basarsa null değerini döndürür. Normal gösterimde çağrının bulunduğu JavaScript akışı yanıtı beklediği için küçük ve basit etkileşimlerde kullanılmalı; modern arayüzlerde çoğu zaman HTML formu tercih edilmelidir.

Temel kullanım ve dönen değer​


En küçük çalışan örnek aşağıdaki gibidir:

Kod:
<button id="start" style="border-radius:4px">Adını sor</button>

<script>
  document.querySelector('#start').addEventListener('click', () => {
    const answer = window.prompt('Adınız nedir?', '');

    if (answer === null) {
      document.querySelector('#start').textContent = 'İşlem iptal edildi';
      return;
    }

    const name = answer.trim();
    document.querySelector('#start').textContent =
      name === '' ? 'İsim girilmedi' : `Merhaba, ${name}!`;
  });
</script>

Kodu bir HTML dosyasına koyup tarayıcıda açın ve düğmeye basın. Bir metin girip Tamam'a bastığınızda düğme üzerinde selamlama görünür; İptal'e basıldığında işlem iptal mesajı görünür. Boş metin girildiğinde sonuç '' olur; bu, null ile aynı değildir. Bu ayrımı kontrol etmezseniz iptal ile boş yanıtı yanlışlıkla aynı işlem olarak değerlendirebilirsiniz.

Sözdizimi​


prompt(mesaj, varsayilanDeger) biçiminde kullanılır. İlk parametre kullanıcıya gösterilecek mesajdır. İkinci parametre isteğe bağlıdır ve giriş alanının başlangıç değerini belirler. Her iki değer de metin olarak ele alınır.

Sonucu kullanırken dönüşüm yapın​


prompt() sayısal görünen bir girişte bile metin döndürür. Sayı bekliyorsanız önce boş ve geçersiz girdileri ele alıp sonra dönüştürün:

Kod:
const raw = window.prompt('Bir sayı girin:', '');

if (raw === null) {
  console.log('Kullanıcı işlemi iptal etti.');
} else if (raw.trim() === '') {
  console.log('Boş değer kabul edilmedi.');
} else {
  const number = Number(raw);

  if (Number.isFinite(number)) {
    console.log(number * 2);
  } else {
    console.log('Geçerli bir sayı girilmedi.');
  }
}

Bu örnek Number’ın kabul ettiği JavaScript sayı biçimlerini kullanır; Türkçe ondalık virgülünü otomatik yerelleştirmez. Örneğin 1,5 girişi bu kuralla geçerli sayı sayılmaz. Bir adet bekliyorsanız ayrıca tam sayı, alt ve üst sınır denetimi ekleyin; sonlu olmak tek başına iş kuralına uygunluk değildir. parseInt() veya parseFloat() bazı kısmi metinleri kabul edebileceğinden, yalnızca tamamı sayısal bir değer kabul edilecekse Number() ve Number.isFinite() birlikte daha anlaşılır bir kontroldür.

Ne zaman kullanılmalı?​


prompt() hızlı prototiplerde, örnek kodlarda, geliştirici araçlarında veya kullanıcıdan tek bir kısa değer alınan basit akışlarda işe yarar. Ancak iletişim kutusu tarayıcı tarafından yönetildiği için görünümü özelleştirilemez; form alanı, doğrulama mesajı ve erişilebilirlik üzerinde sınırlı kontrol sağlar. Normal modal gösterimde çağrının bulunduğu JavaScript akışı bekler. Bununla birlikte sekme değişmesi veya tarayıcı/sandbox politikası nedeniyle kutu hiç açılmayabilir ya da bekleme uygulanmayabilir; kritik iş akışını yalnız bu davranışa bağlamayın.

Karar verirken şu ayrımı kullanabilirsiniz:

İhtiyaçUygun yaklaşımNeden
Hızlı, tek metinlik denemeprompt()Ek HTML ve olay yönetimi gerektirmez
Üretim kullanıcı arayüzüHTML formu veya özel iletişim kutusuGörünüm, doğrulama ve erişilebilirlik kontrol edilir
Parola veya hassas veriUygun bir parola alanı ve sunucu tarafı akışıDüz metin istemi güvenli ve uygun bir arayüz değildir

Özellikle ziyaretçiye gösterilen kalıcı bir özellikte prompt() kullanmak yerine input alanı, açıklama metni ve doğrulama mesajı içeren bir form oluşturun. Kullanıcının girdiği veriyi daha sonra HTML'e aktarırken de doğrudan innerHTML içine yerleştirmeyin; metin göstermek için textContent kullanın.

Sık yapılan hatalar​


  • İptali kontrol etmemek: Dönen değer null olabilir. Üzerinde doğrudan trim() çağırmak hataya yol açar.
  • Metin sonucu sayı sanmak: Aritmetik işlemden önce açıkça dönüştürme ve geçerlilik kontrolü yapın.
  • Boş metni geçerli kabul etmek: trim() ile yalnızca boşluklardan oluşan girdiyi ayrıca değerlendirin.
  • Uzun akışlarda kullanmak: Kullanıcı yanıt verene kadar ana JavaScript akışı beklediği için çok aşamalı işlemlerde form tabanlı arayüz kullanın.

Sık sorulan sorular​


prompt() sunucuda çalışır mı?​

Hayır. prompt() tarayıcı ortamına ait bir özelliktir. Node.js gibi sunucu tarafı JavaScript ortamlarında aynı tarayıcı iletişim kutusunu açmaz; bu ortamlarda giriş, uygulamanın kullandığı komut satırı, HTTP isteği veya başka bir arayüz üzerinden alınmalıdır.

Kullanıcının girdiği değer güvenilir kabul edilebilir mi?​

Hayır. Kullanıcı her türlü metni girebilir. Değeri kullanmadan önce beklenen türü ve biçimi doğrulayın; sunucuya gönderiliyorsa doğrulamayı sunucu tarafında da tekrarlayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.