페이지를 다시로드하지 않는 HTML 버튼을 만드는 방법


116

버튼 ( <input type="submit">)이 있습니다. 클릭하면 페이지가 다시로드됩니다. hide()페이지로드시 호출되는 일부 jQuery 함수가 있으므로 이러한 요소가 다시 숨겨집니다. 버튼이 아무 작업도하지 않도록하려면 어떻게하면 버튼을 클릭했을 때 발생하는 일부 동작을 추가 할 수 있지만 페이지를 다시로드 할 수는 없습니다.

답변:


228

js 또는 jquery가 필요하지 않습니다. 페이지 다시로드를 중지하려면 버튼 유형을 '버튼'으로 지정하십시오. 버튼 유형을 지정하지 않으면 브라우저가 페이지를 다시로드하도록 '재설정'또는 '제출'마녀 원인을 설정합니다.

 <button type='button'>submit</button> 

3
작동합니다! 에 대한 좋은 대안 <input type='button' />입니다.

5
이것은 (있는 허용 대답하지 않는) 잘 작동, 특히 크롬의 경우
hobailey

3
Windows 10의 Chrome에서 작업합니다. 예!
ssdscott

82

중 하나를 사용하여 <button>요소 또는를 사용합니다 <input type="button"/>.


110
기본적으로 <button> 요소는 최소한 크롬에서 다시로드합니다.
AdamC

2
여전히 반환하지 않으려면 양식 onsubmit 이벤트를 사용하고 false를 반환 할 수 있습니다.
neu-rah

4
@Joe 실제로 unfortunatelly 그렇습니다 : / I는 IE8에 대한 작업에 내 웹 애플리케이션을 필요로하고 다시로드는 ... 좀 짜증나는 없다
양 아무도

24
@pbeardshear 양식 내에 배치하면 수행됩니다. 때 <button>폼 외부에 배치되어있는 새로 고침가 발생하지 않습니다!
Kevinvhengst

13
추가 type="button"받는 <button>크롬 요소는 새로 고침하지 않습니다
조니 메츠에게

21

HTML에서 :

<form onsubmit="return false">
</form>

onclick이 할당 된 경우에도 모든 "버튼"을 새로 고치는 것을 방지합니다.


15

jQuery로 버튼에 클릭 핸들러를 추가하고 false를 반환 할 수 있습니다.

$("input[type='submit']").click(function() { return false; });

또는

$("form").submit(function() { return false; });

6
이것은 작동하지 않습니다. 적어도 최신 버전에서는 Chrome에서 false를 반환해도 여전히 새로 고침이 발생합니다.
user3690202

이것은 실제로 나를 위해 일한 유일한 대답입니다. 내 기능에서 false를 반환하고 새로 고침이 사파리와 크롬 모두에서 중단되었습니다.
VessoVit

13

HTML에서 :

<input type="submit" onclick="return false">

이미 언급 된 유사한 변형 인 jQuery를 사용합니다.


9

제출 버튼이 포함 된 양식을 사용할 수 있습니다. 그런 다음 jQuery를 사용하여 양식의 기본 동작을 방지합니다.

$(document).ready(function($) {
  $(document).on('submit', '#submit-form', function(event) {
    event.preventDefault();
  
    alert('page did not reload');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id='submit-form'>
  <button type='submit'>submit</button>
</form>


4

위의 주석 중 하나 (burried)에서 언급했듯이 form 태그 안에 button 태그를 배치하지 않으면이 문제를 해결할 수 있습니다. 단추가 양식 외부에 있으면 페이지가 자체적으로 새로 고쳐지지 않습니다.


2

아직 댓글을 달 수 없어서 답변으로 게시하겠습니다. 를 사용하여 : 피하기 다시로드에 가장 좋은 방법은 user2868288 말했다 방법 @입니다 onsubmitform태그입니다.

여기에 언급 된 다른 모든 가능성 중에서 새 HTML5 브라우저 데이터 입력 유효성 검사가 트리거되도록 허용하고 ( <button>그것도 jQuery / JS 핸들러도 수행하지 않음) jQuery / AJAX 동적 정보를 페이지. 예를 들면 :

<form id="frmData" onsubmit="return false">
 <input type="email" id="txtEmail" name="input_email" required="" placeholder="Enter a valid e-mail" spellcheck="false"/>
 <input type="tel" id="txtTel" name="input_tel" required="" placeholder="Enter your telephone number" spellcheck="false"/>
 <input type="submit" id="btnSubmit" value="Send Info"/>
</form>
<script type="text/javascript">
  $(document).ready(function(){
    $('#btnSubmit').click(function() {
        var tel = $("#txtTel").val();
        var email = $("#txtEmail").val();
        $.post("scripts/contact.php", {
            tel1: tel,
            email1: email
        })
        .done(function(data) {
            $('#lblEstatus').append(data); // Appends status
            if (data == "Received") {
                $("#btnSubmit").attr('disabled', 'disabled'); // Disable doubleclickers.
            }
        })
        .fail(function(xhr, textStatus, errorThrown) { 
            $('#lblEstatus').append("Error. Try later."); 
        });
     });
   }); 
</script>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.