2012-01-19 33 views
21

Tôi có một cuộc trò chuyện sử dụng văn bản thay vì văn bản vì lý do hiển nhiên. Đây là lý do tại sao mỗi thành viên nhấn ENTER họ nhận được một dòng mới thay vì gửi tin nhắn. Tôi muốn thay đổi điều này, vì vậy mỗi khi họ nhấn ENTER = tin nhắn sẽ được gửi và sau đó con trỏ để trở về văn bản cho lần gõ tin nhắn tiếp theo của họ. Tôi đã thử các mã khác nhau được tìm thấy trên trang web này, hầu hết các công việc didnt và những người dường như làm một cái gì đó chỉ là làm mới trang và tôi nhận được một trang trống.Cách tạo khóa "Enter" trong văn bản gửi biểu mẫu

Mã của tôi:

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

Cảm ơn bạn rất nhiều vì thời gian của bạn.

+1

ngôn ngữ lập trình gì đang nói về HTML? – gorootde

+0

Php là ngôn ngữ lập trình ngôn ngữ – Ingrid

+1

lập trình. –

Trả lời

15

tôi đã tạo ra một jsfiddle với một ví dụ về cách làm điều đó với jQuery và keypress chức năng và which tài sản: http://jsfiddle.net/GcdUE/

Không chắc chính xác những gì bạn đang yêu cầu nhiều hơn thế, vì vậy xin ghi rõ câu hỏi của bạn hơn nữa nếu có thể.

$(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, điều này hoạt động nhưng thông điệp chỉ ở lại trong một giây và sau đó dissapears từ trò chuyện. – Ingrid

+0

Ok, đã chỉnh sửa nội dung nào đó để phù hợp với trò chuyện của tôi và mã của bạn hoạt động hoàn hảo ngay bây giờ, cảm ơn tất cả các bạn, bạn đã tử tế nhất! – Ingrid

+0

Vui vì tôi có thể giúp đỡ. :) –

5

Vâng, giả như bạn đang sử dụng jquery nó sẽ là một người biết lắng nghe đơn giản trên lĩnh vực đầu vào của bạn:

Trong chân của bạn trước khi </body >:

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

Trong đầu html của bạn thêm này:

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

nhưng nếu js hoặc jquery nằm ngoài câu hỏi thì có thể cập nhật câu hỏi của bạn để loại trừ đặc biệt câu hỏi đó.

+0

Tôi đã thử nó nhưng doesnt dường như làm việc hoặc tôi chỉ đơn giản là không biết làm thế nào để làm điều đó đúng.i cần phải thay đổi một cái gì đó từ mã? ty – Ingrid

+0

Tôi đã cập nhật câu trả lời của mình. Xin lỗi, tôi đã quên thêm id của bạn vào vùng văn bản. –

+0

Ok, bây giờ nó đã có một phản ứng, có vẻ như tôi chèn nó một cách chính xác nhưng tôi nhận được một trang trống như làm mới. – Ingrid

-2

Sử dụng <input type=text> thay vì <textarea>. Sau đó, bạn có nhiều cơ hội tốt hơn. Trong textarea, nhấn Enter được cho là có nghĩa là ngắt dòng trong văn bản, chứ không phải gửi văn bản.

+0

Vâng, tôi biết, nó từng là văn bản nhưng đó là một vấn đề cho một cuộc trò chuyện, nơi các bài viết dài hơn được thực hiện (như trong hộp bình luận này), chỉ có một dòng. Cảm ơn bạn đã dành thời gian để trả lời. – Ingrid

19

Hãy thử điều này (lưu ý rằng khi bạn nhấn ENTER đi ​​gửi, nhưng SHIFT + ENTER đi ​​dòng mới.

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

bạn là một vị thần cảm ơn bạn !! –

Các vấn đề liên quan