2011-09-08 3 views
7

대화 상자 (텍스트 영역)를 갖고 싶습니다. 사용자가 Enter를 누르면 채팅을 제출해야하며 사용자가 Shift + Enter를 누른 경우 새 줄을 입력해야합니다.텍스트 영역에 Enter 키를 누른 후 Shift 키를 누른 상태에서 Enter 키를 누르면 값이 다음 줄로 이동합니다.

나는 무언가를 시도했지만 정확한 keyup 또는 keydown 것은 알아낼 수 없습니다. 내가 지금 사용하고 코드는 다음과 같습니다

$("textarea").keydown(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    { 
     e.preventDefault(); 
    } 
}); 

jsFiddle

이 또한 내가 + Shift 키를 누르면 입력하면 장소에 \n을 싶어. 내 코드와

편집

문제는 다음과 같습니다 -

내가 사용하여 클라이언트의 내용을 확인 오전

가 경고 후 다음 라인을 보여줍니다. 그러나 내가 그것을 게시 할 때 나의 레일 백 엔드. 그렇다면 그것은 단순한 문자열입니다. 새로운 라인은 없습니다.

이것은 레일 서버에 채팅을 보내는 방법입니다.

$.post("/incomingchat", { body:$("#chat_" + group_id).val() }, 
    function(data){ 
     // do something.. 
    }); 
+6

** 단지 ** 링크는 jsfiddle로 연결하지 마십시오. 항상 질문에 코드를 포함 시키십시오. – Matt

+1

게시 한 코드에 어떤 문제가 있습니까? 내게 그것은 당신이 묘사 한대로 작동합니까? http://jsfiddle.net/Su5ts/25/ – ChrisR

+1

@Matt 죄송합니다.이 점을 명심하십시오. –

답변

2

나는 이것에 대해 전에 대답했다. 캐럿이 텍스트 영역의 끝이 아닌 경우는 조금 까다로운 :

How do I detect "shift+enter" and generate a new line in Textarea?

+0

문제는 내 백엔드 서버에 Jquery를 사용하여이 데이터를 게시하는 경우입니다. Enter + Shift 키를 어떻게 식별 할 수 있습니까? 백 엔드에서 Enter + Shift 키를 누르지 않은 것과 동일합니다. –

+0

@ 모토 : 이해가 안됩니다. Shift + Enter 키를 누른 후 텍스트 영역의 값에는 줄 바꿈이 포함되며이 줄 바꿈은 게시 할 때 서버에 확실히 전송됩니다. –

+0

@TimDown : 관련 질문이 있습니다. Chrome에서 '\ n'을 추가하여 키를 입력 할 때 키 누르기 이벤트를 처리하고 텍스트 영역이 스크롤 가능한 경우 스크롤 막대가 작동하지 않습니다. 즉, Enter 키를 누르면 텍스트 영역이 스크롤되지 않습니다. 내가 타이핑 할 때. 이 문제에 대해 어떤 생각을 갖고 있습니까? –

3
$("textarea").keydown(function(e) 
{ 
    if (e.keyCode == 13) 
    { 
     if (e.shiftKey) { 
      $(this).val($(this).val() + "\n"); 
     } 
     else { 
      submitTheChat(); 
     } 
    } 
}); 
+0

문제는 내 백엔드 서버에 Jquery를 사용하여이 데이터를 게시하는 경우입니다. Enter + Shift 키를 어떻게 식별 할 수 있습니까? 백 엔드에서 입력 + shift 키없이 동일 함 –

1

대신 키 누르기 이벤트를 사용하는 것이 좋습니다. jsfiddle에서 코드를 실행하면 Enter 키를 누를 때 새 행이 추가되지 않습니다.

$("textarea").keypress(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    {   
     e.preventDefault(); 
     //now call the code to submit your form 
     alert("just enter was pressed"); 
     return; 
    } 

    if (e.keyCode == 13 && e.shiftKey) 
    {  
     //this is the shift+enter right now it does go to a new line 
     alert("shift+enter was pressed");   
    }  
}); 
+0

문제는 내 백엔드 서버에 Jquery를 사용하여이 데이터를 게시하는 경우입니다. Enter + Shift 키를 어떻게 식별 할 수 있습니까? 백 엔드에서 Enter + Shift 키를 누르지 않고 동일하게 –

+0

알았어. 이 경우 나는 Tim Down의 답변을보고 싶습니다. – pedrodg

관련 문제