복붙노트

[JQUERY] JQuery와 비활성화 형태에 제출 입력

JQUERY

JQuery와 비활성화 형태에 제출 입력

해결법


  1. 1.키 코드 적발되지 않은 경우, 캐치한다 :

    키 코드 적발되지 않은 경우, 캐치한다 :

    $('#formid').on('keyup keypress', function(e) {
      var keyCode = e.keyCode || e.which;
      if (keyCode === 13) { 
        e.preventDefault();
        return false;
      }
    });
    

    편집 : 그것을 놓친, 그것의 키를 대신의 keyup 사용하는 것이 좋습니다

    편집 2 : 양식 제출을 방지하지 파이어 폭스의 일부 최신 버전에서와 마찬가지로, 그것은 양식도를 키 입력 이벤트를 추가하는 것이 안전합니다. 또한 그것은 단지 형태로 "이름"으로 만 양식 ID에 이벤트를 바인딩하여 (이상?) 작동하지 않습니다. 그러므로 나는 적절하게 코드 예제를 변경하여이 더 분명했다.

    편집 3 : 변경된 바인드 ()에에 ()


  2. 2.일반적으로 양식은 입력 요소에 초점이있을 때 입력에 제출됩니다.

    일반적으로 양식은 입력 요소에 초점이있을 때 입력에 제출됩니다.

    우리는 폼에서 입력 요소에 키 (코드 13)를 입력하지 않도록 설정할 수 있습니다 :

    $('form input').on('keypress', function(e) {
        return e.which !== 13;
    });
    

    DEMO : http://jsfiddle.net/bnx96/325/


  3. 3.심지어 짧은 :

    심지어 짧은 :

    $('myform').submit(function() {
      return false;
    });
    

  4. 4.

    $('form').keyup(function(e) {
      return e.which !== 13  
    });
    

    하는 문서.


  5. 5.

    $(document).on('keyup keypress', 'form input[type="text"]', function(e) {
      if(e.which == 13) {
        e.preventDefault();
        return false;
      }
    });
    

    이 솔루션은 입력 텍스트에 들어갑니다 방지 (아약스 삽입 형태에서도) 웹 사이트의 모든 형태에서 작동합니다. 문서 준비 기능에 배치하고, 삶에 대한이 문제를 잊어 버려.


  6. 6.대부분의 답변은 위의 텍스트 영역 필드에 새로운 라인을 추가하는 사용자를 방지 할 수 있습니다. 이것은 당신이 피하고 싶은 일이 있으면, 당신은 현재 포커스가있는 요소를 확인하여이 특별한 경우를 제외 할 수 있습니다 :

    대부분의 답변은 위의 텍스트 영역 필드에 새로운 라인을 추가하는 사용자를 방지 할 수 있습니다. 이것은 당신이 피하고 싶은 일이 있으면, 당신은 현재 포커스가있는 요소를 확인하여이 특별한 경우를 제외 할 수 있습니다 :

    var keyCode = e.keyCode || e.which;
    if (keyCode === 13 && !$(document.activeElement).is('textarea')) {
      e.preventDefault();
      return false;
    }
    

  7. 7.캡처 가진 내 솔루션은 다음과 같은 브라우저의 동작에 의존하므로이, 키 정말 버그 나 입력에 대한 모든 키 입력을 테스트의 과잉 :

    캡처 가진 내 솔루션은 다음과 같은 브라우저의 동작에 의존하므로이, 키 정말 버그 나 입력에 대한 모든 키 입력을 테스트의 과잉 :

    제출 버튼에 클릭 이벤트를 트리거 Enter 키를 눌러 ** (IE11, 크롬 (38), FF (31)에서 테스트) (참조 : http://mattsnider.com/how-forms-submit-when-pressing-enter/)

    내 솔루션은 제거하는 것입니다 그래서 표준 버튼 (즉, <입력 유형 = "제출">) 제출을 누르면 입력하면 마술 클릭 버튼을 제출에는이 있기 때문에 위의 행동이 실패하지 않습니다 그래서. 대신에, 나는 jQuery의 .submit () 메소드를 통해 양식을 제출하기 위해 정기적 버튼에 jQuery를 클릭 핸들러를 사용합니다.

    <form id="myform" method="post">
      <input name="fav_color" type="text">
      <input name="fav_color_2" type="text">
    <button type="button" id="form-button-submit">DO IT!</button>
    </form>
    
    <script>
     $('#form-button-submit').click(function(){
        $('#myform').submit();
      });
    </script>
    

    데모 : http://codepen.io/anon/pen/fxeyv?editors=101

    형태는 1 입력 필드를 가지고 있으며, 그 분야는 '텍스트'입력되면 **이 동작은 적용되지 않습니다; 어떤 버튼은 HTML 마크 업에 존재 제출하는 경우에도이 경우 형태 (예를 들면 필드를 검색) 키를 누르십시오에 제출되지 않습니다. 이는 90 년대 이후 표준 브라우저 동작하고있다.


  8. 8.당신은 단지 입력 및 이벤트 제출에 사용 형태에 버튼을 제출에 제출할 사용하지 않으려면

    당신은 단지 입력 및 이벤트 제출에 사용 형태에 버튼을 제출에 제출할 사용하지 않으려면

    <form onsubmit="return false;">
    

    당신은 필요한 무엇이든 또한 마지막 단계로 양식을 제출 JS 함수 호출 "반환 false"로 대체 할 수 있습니다.


  9. 9.간단한 방법은 버튼에 버튼의 유형을 변경하는 것입니다 - HTML에 다음 JS에 이벤트를 추가 ...

    간단한 방법은 버튼에 버튼의 유형을 변경하는 것입니다 - HTML에 다음 JS에 이벤트를 추가 ...

    이에서 변경 :

    <form id="myForm">
       <button type="submit">Submit</button>
    </form>
    

    <form id="myForm">
       <button type="button" id="btnSubmit">Submit</button>
    </form>
    

    그리고 JS 또는 JQuery와 추가 기능에 :

    $("#btnSubmit").click(function () {
        $('#myForm').submit();
    });
    

  10. 10.당신은 순수 자바 스크립트, 간단한 완벽하게이 작업을 수행 할 수 있으며, 더 라이브러리가 필요하지 않습니다. 여기 비슷한 주제에 대한 내 자세한 대답은 : 양식 키를 입력 해제

    당신은 순수 자바 스크립트, 간단한 완벽하게이 작업을 수행 할 수 있으며, 더 라이브러리가 필요하지 않습니다. 여기 비슷한 주제에 대한 내 자세한 대답은 : 양식 키를 입력 해제

    즉, 여기에 코드입니다 :

    <script type="text/javascript">
    window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
    </script>
    

  11. 11.나는 여기에 내 솔루션, 당신은 이미 지금이 권리를 해결하기 위해 노력이 문제, 또는 누구를 해결 알고 있지만하지 않습니다!

    나는 여기에 내 솔루션, 당신은 이미 지금이 권리를 해결하기 위해 노력이 문제, 또는 누구를 해결 알고 있지만하지 않습니다!

    $j(':input:not(textarea)').keydown(function(event){
        var kc = event.witch || event.keyCode;
        if(kc == 13){
        event.preventDefault();
            $j(this).closest('form').attr('data-oldaction', function(){
                return $(this).attr('action');
            }).attr('action', 'javascript:;');
    
            alert('some_text_if_you_want');
    
            $j(this).closest('form').attr('action', function(){
                return $(this).attr('data-oldaction');
            });
            return false;
        }
    });
    

  12. 12.다음 코드는이 양식을 제출하는 데 사용되는 키를 입력 부정하지만 여전히 당신이이 텍스트 영역에서 키 입력 사용할 수 있습니다. 당신은 더 필요에 따라 편집 할 수 있습니다.

    다음 코드는이 양식을 제출하는 데 사용되는 키를 입력 부정하지만 여전히 당신이이 텍스트 영역에서 키 입력 사용할 수 있습니다. 당신은 더 필요에 따라 편집 할 수 있습니다.

    <script type="text/javascript">
            function stopRKey(evt) {
              var evt = (evt) ? evt : ((event) ? event : null);
              var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
              if ((evt.keyCode == 13) && ((node.type=="text") || (node.type=="radio") || (node.type=="checkbox")) )  {return false;}
            }
    
            document.onkeypress = stopRKey;
    </script> 
    

  13. 13.입력 할 때을 입력하고 Enter를 누르에서 파이어 폭스에서, 그것의 위 양식을 제출합니다. 이 솔루션은 양식이 추가 제출 것입니다 :

    입력 할 때을 입력하고 Enter를 누르에서 파이어 폭스에서, 그것의 위 양식을 제출합니다. 이 솔루션은 양식이 추가 제출 것입니다 :

    <input type="submit" onclick="return false;" style="display:none" />
    

  14. 14.나중에 3 년이 아니라 한 사람이 완전히이 질문에 대답했다.

    나중에 3 년이 아니라 한 사람이 완전히이 질문에 대답했다.

    아스 커는 기본 양식 제출을 취소하고 자신의 아약스를 호출하려고합니다. 이것은 간단한 솔루션으로 간단한 요청입니다. 각 입력에 입력 된 모든 문자를 차단 할 필요가 없습니다.

    형태를 가정하면, A는, 제출 버튼을 가지고 있는지 <버튼 식 "저장 형"> 또는 <입력 ID = "저장 형"TYPE = "제출"> 수행

    $("#save-form").on("click", function () {
        $.ajax({
            ...
        });
        return false;
    });
    

  15. 15.그래서 여기에 최고 평점 답을 변경하지 않는 것이 좋습니다되는 들었다.

    그래서 여기에 최고 평점 답을 변경하지 않는 것이 좋습니다되는 들었다.

    $('#formid').on('keyup keypress', function(e) {
      if (e.key === 'Enter') { 
        e.preventDefault();
        return false;
      }
    });
    

    REF. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which


  16. 16.파일이 (로드 완료) 완료되면, 스크립트는 "입력"키에 대한 각 이벤트를 감지하고 그 이벤트 뒤에를 해제합니다.

    파일이 (로드 완료) 완료되면, 스크립트는 "입력"키에 대한 각 이벤트를 감지하고 그 이벤트 뒤에를 해제합니다.

    <script>
                $(document).ready(function () {
                    $(window).keydown(function(event){
                        if(event.keyCode == 13) {
                            e.preventDefault(); // Disable the " Entry " key
                            return false;               
                        }
                    });
                });
            </script>
    

  17. 17.코드 위 솔루션의 대부분은 완벽하다. 그러나, 나는 불완전 가장 좋아 하나 "짧은 대답을"생각합니다.

    코드 위 솔루션의 대부분은 완벽하다. 그러나, 나는 불완전 가장 좋아 하나 "짧은 대답을"생각합니다.

    그래서 여기에 전체 답이다. 뿐만 아니라 IE 7에 대한 네이티브 지원과 자바 스크립트입니다.

    var form = document.getElementById("testForm");
    form.addEventListener("submit",function(e){e.preventDefault(); return false;});
    

    Enter 키를 사용하여 제출하고 페이지를 다시로드되지 않거나 양식 어딘가에 아래의 경우, 페이지의 상단에 당신을 데려에서이 솔루션은 현재 사용자를 방지 할 수 있습니다.


  18. 18.이것은 어떤가요:

    이것은 어떤가요:

    $(":submit").closest("form").submit(function(){
        $(':submit').attr('disabled', 'disabled');
    });
    

    이 앱에서 전송 버튼으로 모든 형태를 사용하지 않도록 설정해야합니다.

  19. from https://stackoverflow.com/questions/11235622/jquery-disable-form-submit-on-enter by cc-by-sa and MIT license