2016-11-24 1 views
1

나는 html-php-javascript를 사용하여 간단한 채팅을하고 있습니다. "chatbox"가 거기에서 채팅을로드하기 때문에 textarea에서 로그 파일로 텍스트를 제출하고 싶습니다.PHP - HTML - Javascript - 들어가기 버튼을 눌러 텍스트 영역에 텍스트 제출

"admin_post.php"의 텍스트 영역에 텍스트를 제출하는 코드를 작성했는데 작동합니다.

그러나 관리자는 "보내기"버튼을 눌러야 만 가능합니다. 관리자가 키보드에서 "enter"키를 누르면 양식에서 "보내기"버튼을 누르는 것과 동일하게 javascript를 작성할 수 있습니까? 여기

가 admin_post.php의 HTML 코드입니다 :
<form id="admintextform" name="message" action=""> 
      <?php $adminmsg = !empty($_POST['adminmsg']) ? $_SESSION['adminmsg'] : '';?> 
      <textarea class="admintextarea" name="adminmsg" id="adminmsg" size="63" /><?php echo $adminmsg; ?></textarea> 
      <input name="adminsubmitmsg" type="submit" id="adminsubmitmsg" value="Send" /> 
     </form> 

및 대한

은 "보내기"버튼 스크립트 :

<script type="text/javascript"> 
     //If user submits the form 
     $("#adminsubmitmsg").click(function(){ 
     var adminmsg = $("#adminmsg").val(); 
      $.post("admin_post.php", {text: adminmsg});    
      $("#adminmsg").attr("value", ""); 
      return false; 
     }); 
</script> 

나는 내 문제를 해결하기 위해이 아래 스크립트를 해봤지만 아무튼 일하지 마라. 아래의 javascript가 키보드의 Enter 버튼을 눌러 위의 "보내기"버튼 스크립트와 똑같이 할 수 있기를 바랍니다.

<script type="text/javascript"> 
     $("#admintextarea").keypress(function (e) { 
      if(e.which == 13 && !e.shiftKey) { 
       var adminmsg = $("#adminmsg").val(); 
       $.post("admin_post.php", {text: adminmsg});    
       $("#adminmsg").attr("value", ""); 
       return false; 
      } 
     }); 
</script> 

제발 도와 주셔서 감사합니다. :)

+0

무엇이 잘못 될 수 있습니까? 예상되는 행동은 무엇이며 실제로 얻는 것은 무엇입니까? – Cunning

+0

안녕하세요. 텍스트 입력란에있는 텍스트를 로그 대화 파일에 제출하려면 Enter 버튼을 누르십시오. – anakpanti

+0

스택 오버플로에 오신 것을 환영합니다. 질문을 향상시킬 수 있습니다. [Minimal, Complete, Verifiable example] (http://stackoverflow.com/help/mcve)을 읽어보십시오. 코드가 추가로 아무 것도없는 정확한 문제를 보여줄 때 자원 봉사자를 존중합니다. 스크롤을 없애기 위해 코드의 서식을 지정하면 다른 사람들이 여러분을 쉽게 도울 수 있습니다. – zhon

답변

0

먼저 HTML에 문제가있었습니다. 오프닝에서 textarea 태그를 닫았습니다.

해결 방법은 JSFiddle이 도움이 되었기를 바랍니다.

$("#adminmsg").on('keypress', function(e){ 
    if (e.which == 13) 
    { 
    e.preventDefault(); 
    console.log($(this).val()); 
    $(this).val(""); 
    } 
}); 

요점 :

  1. 당신은 선택이 잘못있어 여기에 코드입니다. #은 ID에 해당하고 .은 클래스에 해당합니다.
  2. 문서가 완전히로드되기 전에 코드가 실행될 수 있습니다. 따라서 바인딩 할 요소를 찾을 수 없습니다. 대신 페이지에서 해당 선택기에 바인딩을 수행하려면 on을 사용하십시오. 또는 페이지가 완전히로드되고 준비된 후에 $(document).ready(function(){ /* your code */ }); 내부에 코드를 삽입하여 실행하십시오.
+1

오 마이. 정말 고맙습니다. 귀하의 첫 번째 요점은 맞습니다, 나는 내 텍스트 영역의 클래스와 이름/ID 사이에 실수를했습니다. – anakpanti

관련 문제