2017-02-17 1 views
0

div 아래에 선택 드롭 다운이있는 텍스트 영역이 있습니다. 그 아래에는 두 개의 버튼이 있습니다. 하나는 미리보기이고, 다른 하나는 텍스트를 파일로 업로드하는 것입니다. 텍스트 영역이 비어있는 경우 업로드 버튼을 숨기려고합니다. 내 자바 스크립트는 항상 버튼을 숨기기 때문에 작동하지 않습니다. 자신의 JSFiddle에 링크텍스트 영역이 비어있는 경우 버튼을 숨기는 Javascript 기능이 작동하지 않습니다.

<div class="container"> 
<label for="text-area">Paste your code here: </label> 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
    <textarea name="code_input" id="code_textarea" class="form-control" rows="15" placeholder="Start coding!" required><?= isset($_POST['code_input']) ? $_POST['code_input'] : '' ?></textarea> 
    <div class="button-container"> 
     <select required name="language-select" class="form-control" id="language_selector"> 
      <option value="" selected disabled>Language</option> 
      <option>20 options follow</option> 
<!-- THIS WILL KEEP THE VALUE IN THE DROPDOWN AFTER SUBMIT --> 
      <script type="text/javascript"> 
       document.getElementById('language_selector').value = "<?php echo $_POST['language-select'];?>"; 
      </script> 
     </select> 
     <br/> 
     <br/> 
     <div id="button-container" class="btn-toolbar"> 
      <button id="drive_submit_btn" class="btn btn-md" type="submit">Preview</button> 
      <button id="upload_btn" class="btn btn-md" type="submit">Upload</button> 
     </div> 
    </div> 
</form> 
<div class="show-code"> 
    <script src="lib/prism.js"></script> 
    <!-- THIS DISPLAYS THE CODE AFTER SUBMITTING USING THE PRISM.JS PLUGIN FOR SYNTAX HIGHLIGHTING --> 
    <!-- Get language selection from dropdown and append it to language class. Echo the text as highlighted code --> 
    <pre><code class="language-<?php echo $language ?>"><?php echo $user_code; ?></code></pre> 
</div> 
    </div> 


<!-- THIS IS THE JAVASCRIPT TO HIDE THE BUTTON UNTIL TEXT IS ENTERED.--> 
<!-- HOWEVER IT ALWAYS HIDES IT!! --> 

<script> 
$(document).ready(function() { 
/* I EVEN TRIED TO TRIM IT TO NO AVAIL */ 
    var content = $.trim($('#code_textarea').val()); 
    if(content.length === 0) { 
     $('#upload_btn').hide(); 
    } else { 
     $('#upload_btn').show(); 
    } 
}); 
</script> 

내가 본 많은 답변 : 여기

은 (20 그들을 있기 때문에 왼쪽으로 모든 옵션 포함) 양식, 버튼 컨테이너를 선택 드롭 다운입니다 , 그리고 그들은 모두 잘 작동합니다. 무슨 일로 광산이 제대로 작동하지 않습니까? 내 모든 JS 기능을 제외하고 잘 작동합니다.

+0

다시 숨겨집니다 중 관련 소스 코드 만 표시합니다. 또한'php'를 통해 콘텐츠를 삽입하고 있거나 클라이언트가 이벤트 리스너를 사용해야하므로 텍스트 영역에서 데이터를 제거한 경우 버튼을 숨기지 않는다는 것을 의미합니까? – NewToJS

+0

content.length가 실제로 0인지 확인하기 위해 디버그 했습니까? 버튼을 잘 때 코드를 복사하고 텍스트 영역 내에서 PHP 스크립트를 제거 작동합니다. 무슨 일이 일어나고 있는지 다시 한번 확인하고 싶을 수도 있습니다. –

+0

@NewToJS 그래서 PHP 코드가 포함되어 있습니다. PHP 코드를 제거하면 제출 한 후 코드 블록이 표시되지 않습니다. – IRGeekSauce

답변

0

핸들러를 textarea의 'keyup'이벤트에 연결하십시오. (그리고 눈에 보이지 않는 BTN로 시작합니다.) 자바 스크립트 솔루션

$(document).keyup('.code_textarea',function() { 
 
/* I EVEN TRIED TO TRIM IT TO NO AVAIL */ 
 
    var content = $.trim($('#code_textarea').val()); 
 
    if(content.length === 0) { 
 
     $('#upload_btn').hide(); 
 
    } else { 
 
     $('#upload_btn').show(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
<label for="text-area">Paste your code here: </label> 
 
<form method="post" > 
 
    <textarea name="code_input" id="code_textarea" class="form-control" rows="5" placeholder="Start coding!" required></textarea> 
 
    <div class="button-container"> 
 
     <select required name="language-select" class="form-control" id="language_selector"> 
 
      <option value="" selected disabled>Language</option> 
 
      <option>20 options follow</option> 
 
<!-- THIS WILL KEEP THE VALUE IN THE DROPDOWN AFTER SUBMIT --> 
 
      <script type="text/javascript"> 
 
       document.getElementById('language_selector').value = ""; 
 
      </script> 
 
     </select> 
 
     <br/> 
 
     <br/> 
 
     <div id="button-container" class="btn-toolbar"> 
 
      <button id="drive_submit_btn" class="btn btn-md" type="submit">Preview</button> 
 
      <button style="display:none" id="upload_btn" class="btn btn-md" type="submit">Upload</button> 
 
     </div> 
 
    </div> 
 
</form> 
 
<div class="show-code"> 
 
    <script src="lib/prism.js"></script> 
 
    <!-- THIS DISPLAYS THE CODE AFTER SUBMITTING USING THE PRISM.JS PLUGIN FOR SYNTAX HIGHLIGHTING --> 
 
    <!-- Get language selection from dropdown and append it to language class. Echo the text as highlighted code --> 
 
    <pre><code class="language-"></code></pre> 
 
</div> 
 
    </div> 
 

 

 
<!-- THIS IS THE JAVASCRIPT TO HIDE THE BUTTON UNTIL TEXT IS ENTERED.--> 
 
<!-- HOWEVER IT ALWAYS HIDES IT!! -->

+0

거의 keyup() 함수와 작동하지만, 입력을 시작한 후에 만 ​​작동합니다. 그런 다음 backspace 키를 눌러 텍스트를 제거하십시오. – IRGeekSauce

+0

알았어, 신경 쓰지 마. 나는

+0

"Preview"를 클릭하고 $ _POST 요청을 보내면 업로드 버튼이 다시 사라집니다. 그러나 그것은 또 다른 질문이 될 것입니다. 당신이 직접 질문에 답한 이후에 알아낼 수 있는지 알게 될 것입니다. – IRGeekSauce

1

네이티브.

업로드 버튼이 처음부터 숨겨진, keyUp 이벤트가 텍스트 영역 해고 될 때, 텍스트 영역의 내용을 확인하고 버튼을 수 표시하거나

code_textarea.addEventListener('keyup', function(){ 
 
if(code_textarea.value){ 
 
    upload_btn.classList.remove("hidden"); 
 
} 
 
else { 
 
    upload_btn.classList.add("hidden"); 
 
} 
 
});
.hidden { 
 
    display:none; 
 
}
<textarea name="code_input" id="code_textarea" class="form-control" rows="5" placeholder="Start coding!" required></textarea> 
 

 
<button id="upload_btn" class="btn btn-md hidden" type="submit">Upload</button>

관련 문제