2012-01-19 12 views
21

Açık metinler nedeniyle metin yerine textarea kullanan bir sohbetim var. Bu yüzden üyeler ENTER tuşuna bastığında, mesajı göndermek yerine yeni bir satır alırlar. Bunu değiştirmek istiyorum, bu yüzden her girdiklerinde ENTER = gönderilecek mesaj ve daha sonra imleç bir sonraki mesaj yazımı için textarea'ya dönecekler. Bu sitede bulunan farklı kodları denedim, çoğu işe yaramadı ve bir şeyler yapmak için görünenler sadece sayfayı tazeliyordu ve boş bir sayfa aldım.Bir textarea'da "Enter" tuşu nasıl oluşturulur

Kodum:

<form name="message" action=""> 
    <textarea name="usermsg" autocomplete="off" type="text" id="usermsg" rows="4" cols="30" style="width: 450px; margin-left: 25px;"> 
    </textarea> 
    <br/> 

    <p style="margin-left: 420px;"><input name="submitmsg" type="submit" id="submitmsg" value="Send" /></p> 
</form> 

zaman için size çok teşekkür ederim.

+1

Hangi programlama dilini sen? HTML bahsediyoruz unutmayın deneyin? – gorootde

+0

Php programlama dilidir. – Ingrid

+1

programlama dili Bu bir istemci tarafı isteği olduğu için burada alakasız olmalıdır. –

cevap

15

jQuery ile nasıl yapılacağına ilişkin bir örnek ve keypress fonksiyonu ve which özelliğe sahip bir jsfiddle yarattık Eğer mümkünse.

$(function() { 
    $("#usermsg").keypress(function (e) { 
     if(e.which == 13) { 
      //submit form via ajax, this is not JS but server side scripting so not showing here 
      $("#chatbox").append($(this).val() + "<br/>"); 
      $(this).val(""); 
      e.preventDefault(); 
     } 
    }); 
}); 
+0

Anders, bu çalışır, ancak mesaj sadece bir saniye kalır ve sonra sohbetten kaybolur. – Ingrid

+0

Tamam, sohbetime uygun bir şey düzenledim ve kodunuz şimdi mükemmel çalışıyor, teşekkürler, çok naziksiniz! – Ingrid

+0

Sevindim Yardımcı olabilirim. :) –

5

Eh, basit bir girişinizi sahada dinleyici olacağını jquery kullanarak edildi varsayarak:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#usermsg').keypress(function(e){ 
     if(e.which == 13){ 
      // submit via ajax or 
      $('form').submit(); 
     } 
    }); 
}); 
</script> 

html kafası bu ekleyin:: < önce altbilgisinde

/beden >

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> 

ancak js veya jquery söz konusu değilse, belki de özel olarak hariç tutmak için sorunuzu güncelleyin. http://jsfiddle.net/GcdUE/ Bundan daha fazlasını talep ediyorlar tam olarak ne olduğundan emin

değil, bu yüzden daha da sorunuzu lütfen belirtin:

+0

Çalıştım ya da işe yaramıyor gibi görünmüyor ya da sadece nasıl yapılacağını bilmiyorum koddan bir şey değiştirmek zorunda mıyım? ty – Ingrid

+0

Cevabımı güncelledim. Üzgünüz, kimliğinizi textarea'ya eklemeyi unuttum. –

+0

Tamam, şimdi bir yanıt aldı, doğru yerleştirdiğim gibi görünüyor, ancak yenileme gibi boş bir sayfa aldım. – Ingrid

-2

Kullanım <input type=text> yerine <textarea>. O zaman çok daha iyi şansınız var. textarea'da, Enter'a basmak metnin gönderilmemesi, metinde satır sonu olması anlamına gelir.

+0

Evet, biliyorum, bu metin eskiden yapılmıştı, ancak uzun mesajların (bu yorum kutusunda olduğu gibi) yapıldığı bir sohbet için bir sorun var. Cevap vermek için zaman ayırdığınız için teşekkür ederiz. – Ingrid

19

bu (Gönderdiğiniz gitmek ENTER ama SHIFT + yeni bir satır gitmek ENTER tuşuna bastığınızda.

$("#textareaId").keypress(function (e) { 
    if(e.which == 13 && !e.shiftKey) {   
     $(this).closest("form").submit(); 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

bir tanrı sensin teşekkür ederim! –

İlgili konular