2010-12-11 34 views
44

Khi điền văn bản của biểu mẫu, hành vi mặc định khi nhấn phím enter là di chuyển đến dòng tiếp theo. Làm thế nào tôi có thể thay đổi hành vi của biểu mẫu để nó sẽ gửi khi người dùng nhấn enter ngay cả khi người dùng đang ở trong một vùng văn bản?Làm cách nào để gửi biểu mẫu khi bạn nhập văn bản?

Tôi đã sử dụng Firebug để thanh toán Stack   Văn bản nhận xét của luồng tràn (có hành vi này), nhưng không thể thấy bất kỳ JavaScript nào đạt được ảnh hưởng này. Có cách nào để thay đổi hành vi của vùng văn bản mà không cần sử dụng JavaScript không?

+3

gì nếu chúng ta đổi tên câu hỏi này để "nộp mẫu trên nhập khi trong textarea"? –

Trả lời

95

Bạn không thể làm điều này nếu không có JavaScript. Stackoverflow đang sử dụng thư viện JavaScript jQuery đính kèm các hàm vào các phần tử HTML khi tải trang.

Đây là cách bạn có thể làm điều đó với Javascript cơ bản:

<textarea onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }"></textarea> 

keyCode 13 là phím Enter.

Đây là cách bạn có thể làm điều đó với jQuery giống như Stackoverflow làm:

<textarea class="commentarea"></textarea> 

với

$(document).ready(function() { 
    $('.commentarea').keydown(function(event) { 
     if (event.keyCode == 13) { 
      this.form.submit(); 
      return false; 
     } 
    }); 
}); 
+11

Vì người dùng quen thuộc hơn với các hành động khi họ phát hành khóa, nên thực hành tốt hơn để sử dụng onkeyup hoặc keyup() thay vì keydown(). –

+0

Giải thích hay. @Eric Fortis - điểm tốt về onkeyup. – andrew

+0

Tôi sẽ viết một hàm vào trong tệp chức năng biểu mẫu của tôi để thử và giữ mã sạch. – andrew

4
<form id="myform"> 
    <input type="textbox" id="field"/> 
    <input type="button" value="submit"> 
</form> 

<script> 
    $(function() { 
     $("#field").keyup(function (event) { 
      if (event.which === 13) { 
       document.myform.submit(); 
      } 
     } 
    }); 
</script> 
+0

Lưu ý rằng phần liên quan của HTML là ID, tôi đã sử dụng một hộp văn bản nhưng nó có thể là bất kỳ thẻ nào bạn muốn đính kèm hành vi. Ngoài ra để dễ đọc, tôi thích gọi biểu mẫu bằng ID của nó như được hiển thị, điều này rất tiện dụng đặc biệt nếu bạn có nhiều biểu mẫu trong mã của mình. –

+0

đẹp, tôi không lên kế hoạch học jquery tại thời điểm này. Tôi thích tự viết hàm vì sau đó tôi có cơ hội để thực hành viết javascript – andrew

5

Tại sao bạn muốn văn bản gửi khi bạn nhấn enter?

Nhập "văn bản" sẽ gửi theo mặc định khi bạn nhấn enter. Nó là một đầu vào dòng đơn.

<input type="text" value="..."> 

"văn bản" sẽ không, vì nó hưởng lợi từ khả năng đa dòng. Gửi vào nhập sẽ lấy đi một số lợi ích này.

<textarea name="area"></textarea> 

Bạn có thể thêm mã JavaScript để phát hiện nhập phím và tự động gửi nhưng bạn có thể sử dụng nhập văn bản tốt hơn.

+1

Bởi vì tôi muốn có một hộp đầu vào nhiều dòng và tôi muốn người dùng có thể gửi bằng cách nhấn enter. Tôi sẽ hoàn toàn loại bỏ nút gửi. Tôi nghĩ rằng SO nên thoát khỏi nút Add Comment của họ nếu họ sẽ cho phép bình luận được gửi khi phím enter được nhấn – andrew

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