2011-02-10 36 views
10

Sử dụng jQuery làm thế nào tôi có thể không cho phép dòng mới sẽ được chèn vào (bằng cách nhấn enter hoặc sao chép trong văn bản) - Trong mã bán giả ...Không cho phép dòng mới trong textarea

$('textarea').keydown(function(){ 
$(this).remove_new_lines(); 
}); 

Cảm ơn!

CHỈNH SỬA:

Nó sẽ thô như sau hoặc có cách nào tốt hơn?

function removeNL(s){ 
    return s.replace(/[\n\r\t]/g,); 
} 

$('textarea').keydown(function(){ 
$(this).val(removeNL($(this).val)); 
}); 
+0

khi gõ dùng hoặc khi thiết lập các nội dung vào textarea – Fatih

+0

khi người dùng gõ – kieran

+0

Với tất cả các dưới các giải pháp, tôi vẫn có thể mở các công cụ dành cho nhà phát triển Chrome và chỉnh sửa thủ công nội dung của trường. Hoặc tắt javascript. :) –

Trả lời

17

Có hai phương pháp để làm điều này: kiểm tra từng nhân vật vì nó là đầu vào và trả về false nếu bạn không muốn nó hiển thị, hoặc trên mỗi thay đổi/keyup bạn có thể kiểm tra toàn bộ nội dung. Mặc dù trước đây có hiệu suất cao hơn nhưng nó sẽ không hoạt động trong các tình huống mà người dùng dán nội dung trong đó bao gồm các ký tự không mong muốn. Vì lý do đó, tôi khuyên bạn nên tiếp cận thứ hai, một cái gì đó như thế này (mà sẽ không cho phép tất cả các khoảng trắng dọc):

$('textarea').on('keyup', function(){ 
    $(this).val($(this).val().replace(/[\r\n\v]+/g, '')); 
}); 
+0

Gsub là gì? Nó nói rằng nó không phải là một chức năng được công nhận – kieran

+0

Một phương pháp Ruby ... hahaha. Rất tiếc. Đổi chỗ trong 'replace()', tương đương với JavaScript. – coreyward

+0

Bất kỳ ý tưởng nào về cách thay thế nhiều dòng mới chỉ bằng một dòng? Tôi đã thử phương pháp này, không hoạt động: $ ('# text'). Val ($ ('# text'). Val() thay thế (/ \ v +/g, "\ n")); – andufo

5

bạn có thể kiểm tra keyCode, nếu nó là tương đương với 13 chỉ đơn giản trả về false

 
$('#TEXTAREA').keypress(function(e){ 
    if (e.keyCode == 13) return false 
}) 
+3

không giải quyết việc dán người dùng trong nội dung – kieran

1
$('textarea').keydown(function(e){ 
var s = $('textarea').val(); 
while (s.indexOf("\n") > -1) 
    s = s.replace("\n",""); 
$('textarea').val(s); 
}); 
+0

hoạt động tốt. Có vẻ như một chút trên đầu trang mặc dù? – kieran

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