2012-12-24 36 views
12

Tôi có biểu mẫu có vùng văn bản và nhấn phím enter sẽ gửi biểu mẫu của tôi. Làm thế nào tôi có thể làm cho nó thêm một ký tự dòng mới thay vì gửi biểu mẫu.Thêm ký tự dòng mới vào văn bản thay vì gửi biểu mẫu

+0

Bạn có làm việc với ASP.net không? – anmarti

+0

no iam làm việc với Spring mvc, nhưng đây là một dạng html đơn giản. – khizar

+0

thay đổi bạn thân + nhập làm công việc mặc định như những gì bạn muốn –

Trả lời

25
$('textarea').keypress(function(event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
     var s = $(this).val(); 
     $(this).val(s+"\n"); 
    } 
});​ 

JSFiddle Demo

+1

cũng cho mỗi người bạn trả lời nên đọc câu hỏi đúng;) –

+1

+1 là người duy nhất cho đến nay để làm như vậy! – Archer

+1

tôi cũng đã suy nghĩ để trả lời nó đầu tiên nhưng tôi đã có một sự nhầm lẫn về '/ n' hoặc' \ n';) –

1

bạn có thể thử mã này:

$(document).ready(function() { 
    $("textarea").keydown(function(event){ 
    if(event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
    }); 
}); 
+0

Điều này vô hiệu hóa nó trên cửa sổ, có thể không được dự định. Bạn nên phạm vi nó vào hộp nhập liệu được đề cập. – ryadavilli

2

Điều này sẽ giúp

$('#myProblematicForm textarea').keypress(function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    this.value = this.value + "\n"; 
    } 
}); 

Đối với những gì nó có giá trị, tôi đang sử dụng Chrome trên OS X và Nhập chèn một \n trong văn bản cho tôi và không phải là gửi biểu mẫu theo mặc định.

+0

Bạn thân tôi cũng đang sử dụng Google Chrome Nhưng Trên Windows, Nó không thêm ngắt dòng làm mặc định! –

+0

@AspiringAqib, tôi không phải là bạn của bạn, bạn thân: P –

+0

ok, tôi cũng đang sử dụng Google Chrome Nhưng Trên Windows, Nó không thêm ngắt dòng làm mặc định! –

1
$(document).ready(function() { 
    $('textarea').keydown(function(event){ 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
     var s = $(this).val(); 
     $(this).val(s+"\n"); 
    } 
    }); 
}); 
1

câu trả lời trước không xử lý tách giá trị hiện tại của textarea và chỉ cần gắn thêm một ký tự dòng mới. Sau đây dừng sự kiện từ sủi bọt lên đến hình thức và vẫn cho phép hành vi của textarea điển hình trên 'enter'.

$('textarea').keydown(function(event) { 
    if (event.keyCode === 13) { 
    event.stopPropagation(); 
    } 
}); 
1

này làm việc cho tôi

$(document).keypress(function(e) { 
if(e.which == 13) { 
    if(document.activeElement.tagName != "TEXTAREA") { 
     e.preventDefault(); 
    }; 
    } 
}) 
0
$(document).ready(function(){ 
$("#text").keypress(function(event) { 
    if (event.which == 13) { 
     var s = $(this).val(); 
     $(this).val(s+"\n"); //\t for tab 
    } 
});  
}); 

này có thể được thực hiện bằng cách mã jquery mà tôi đã đưa ra ở trên. Phải lưu ý rằng việc sử dụng hàm sẵn sàng là cần thiết khi bạn viết kịch bản trên trước mã của trường nhập HTML và không cần thiết khi bạn viết nó sau mã trường nhập. Nếu nó không hoạt động, hãy cố gắng sử dụng \ t thay cho \ n nó sẽ hoạt động.

+0

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về cách thức và/hoặc lý do giải thích vấn đề này sẽ cải thiện giá trị lâu dài của câu trả lời. Vui lòng đọc [cách trả lời] này (http://stackoverflow.com/help/how-to-answer) để cung cấp câu trả lời có chất lượng. – thewaywewere

+0

Cảm ơn các đề xuất @thewaywewere, xem câu trả lời đã chỉnh sửa của tôi, hy vọng nó có thể giúp bạn. –

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