jQuery를 사용하여 부트 스트랩 모달 창을 여는 방법은 무엇입니까?


769

Twitter Bootstrap 모달 창 기능을 사용하고 있습니다. 누군가가 양식에서 제출을 클릭하면 양식에서 "제출 버튼"을 클릭하면 모달 창을 표시하고 싶습니다.

<form id="myform" class="form-wizard">
    <h2 class="form-wizard-heading">BootStap Wizard Form</h2>
    <input type="text" value=""/>
    <input type="submit"/>
</form>

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Modal header</h3>
    </div>
    <div class="modal-body">
        <p>One fine body…</p>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
        <button class="btn btn-primary">Save changes</button>
    </div>
</div>

jQuery :

$('#myform').on('submit', function(ev) {
    $('#my-modal').modal({
        show: 'false'
    }); 


    var data = $(this).serializeObject();
    json_data = JSON.stringify(data);
    $("#results").text(json_data); 
    $(".modal-body").text(json_data); 

    // $("#results").text(data);

    ev.preventDefault();
});

쇼 옵션에 오타가 있습니다. 부울이 필요하므로 'false'-$ ( '# my-modal'). modal ({show : false}) 주위에 따옴표를 넣지 마십시오.
대런 파커

답변:


1413

부트 스트랩에는 모달에서 수동으로 호출 할 수있는 몇 가지 기능이 있습니다.

$('#myModal').modal('toggle');
$('#myModal').modal('show');
$('#myModal').modal('hide');

여기에서 더 많은 것을 볼 수 있습니다 : 부트 스트랩 모달 구성 요소

특히 방법 섹션 .

따라서 변경해야합니다.

$('#my-modal').modal({
    show: 'false'
}); 

에:

$('#myModal').modal('show'); 

나만의 맞춤 팝업을 만들려면 다른 커뮤니티 회원이 제안한 비디오가 있습니다.

https://www.youtube.com/watch?v=zK4nXa84Km4


5
왜 이것이 내 경우에 작동하지 않는지 잘 모르겠습니다. 내 페이지에 동일한 데모 코드가 있으며 위와 같이 제출 버튼을 코딩했습니다. 그러나 제출을 클릭하면 모달 창이 빠르게 깜박이고 사라집니다. 페이지를 반환하려면 브라우저의 '뒤로'버튼을 클릭해야합니다.
Chris22

6
위의 의견에 대한 답변을 찾았습니다 . 사이트 페이지에서 bootrap.js에 대한 링크가 중복되었습니다.
Chris22

1
잡히지 않은 TypeError : $ (...). modal은 함수가 아닙니다. 이것은 아마도 나이지만이 오류가 발생하는 이유는 무엇입니까? (내가 jQuery를해야합니까)
블라디미르 verleg

4
내 문제를 발견하고 Jquery가 포함 된 파일 마녀에 대한 아약스 호출을했습니다. jQuery가 2 번 포함되면 작동하지 않습니다!
블라디미르 verleg

2
나는 시도 .modal('show')했지만 구글 크롬 브라우저에서 작동하지 않습니다
Durga

89

또한 데이터 속성을 통해 사용할 수 있습니다

<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

이 특별한 경우에는 자바 스크립트를 작성할 필요가 없습니다.

더 자세한 내용은 여기를 참조하십시오 : http://getbootstrap.com/2.3.2/javascript.html#modals


4
명확히하기 위해 : "자바 스크립트를 사용할 필요가 없습니다"는 "자바 스크립트를 작성할 필요가 없습니다"를 의미하며, 여전히 자바 스크립트가 사용되고 있습니다. 답변을 수정하려고했지만 '보다 정확하지'않아 답변이 거부되었습니다. 자바 스크립트를 비활성화 한 상태에서 위의 코드를 시도하면 작동하지 않습니다. 그것은 당신이 나에게 자바 스크립트를 사용한다는 것을 의미합니다.
npretto

83

가장 자주 $('#myModal').modal('show');작동하지 않으면 jQuery를 두 번 포함했기 때문에 발생합니다. jQuery를 2 번 포함하면 모달이 작동하지 않습니다.

링크 중 하나를 제거하여 다시 작동 시키십시오.

또한 일부 플러그인은 오류를 발생시킵니다.이 경우 추가하십시오.

jQuery.noConflict(); 
$('#myModal').modal('show'); 

3
그것으로 DataTables은 패키지 된 것 jQuery를 버전은 나를 위해이 원인
웨슬리 스미스에게

2
대단히 감사합니다. 나는 같은 문제가 있습니다 : 모달은 함수가 아닙니다. 그러나 jQuery.noConflict ()를 추가하면 작동합니다.
Jobayer Ahmmed 2018 년

1
이 해결 방법은 근본 원인을 해결할 수없는 경우에만 사용해야합니다 (예 : jQuery를 한 번만 포함). 일부 타사 플러그인에 플러그인이 포함되어 있으면 포함되지 않은 버전을 찾거나 타사에 문의하여 플러그인을 만드십시오.
rybo111

19

jQuery선택기를 사용하여 모달 메소드를 호출하십시오 (매개 변수를 전달하지 않고) .

예를 들면 다음과 같습니다.

$('#modal').modal();

1
모달에 더 많은 매개 변수를 전달하려면 어떻게합니까? 예를 들어 특정 (동적) ID?
Pathros

1
ID를 어떻게 동적으로 만드나요? ID로 작성합니까? 그렇다면 jQuery의 $ (this) 기능을 사용하여 현재 객체를 선택하고 매개 변수를 전달할 수 있습니다.
Brane

13

링크의 onclick 함수를 사용하여 jQuery에 의해 모달을 호출하는 경우 "href"는 null 일 수 없습니다.

예를 들면 다음과 같습니다.

... ...
<a href="" onclick="openModal()">Open a Modal by jQuery</a>
... ...
... ...
<script type="text/javascript">

function openModal(){

    $('#myModal').modal();
}       
</script>

모달이 표시되지 않습니다. 올바른 코드는 다음과 같습니다

<a href="#" onclick="openModal()">Open a Modal by jQuery</a>

12

문서가 준비되는 즉시 부트 스트랩 경고를로드하는 방법은 다음과 같습니다. 그냥 추가하는 것은 매우 쉽습니다

 $(document).ready(function(){
   $("#myModal").modal();
});

W3Schools에 대한 데모 를 만들었습니다 .

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Here is how to load a bootstrap modal as soon as the document is ready </h2>
  <!-- Trigger the modal with a button -->


  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>

<script>
$(document).ready(function(){
   $("#myModal").modal();
});
</script>

</body>
</html>


10

전체 솔루션을 확인하십시오 :

http://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_ref_js_modal_show&stacked=h

결과를 얻으려면 라이브러리를 필수 순서로 놓아야합니다.

1- 첫 번째 bootstrap.min.css 2-jquery.min.js 3-bootstrap.min.js

즉, bootstrap.min.js 전에 jquery.min.js를 호출해야합니다.

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script> 

 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

7

나는 실패한 여러 가지 방법을 시도했지만 아래는 매력처럼 작동했습니다.

$('#myModal').appendTo("body").modal('show');

2
같은! 이것은 나를 위해 일한 유일한 솔루션입니다.
pengz

원하지 .appendTo("modal-body")않습니까?
James A Mohler

@novembersky, 클릭 이벤트 또는 jquery를 사용하여 페이지를로드 할 때 코드를 입력해야합니다. $ (document) .ready (function () {$ ( "# myModal"). modal ();});
Abhijit Kumar

7

함수를 호출 할 때 $ 부호 대신 jQuery 를 사용해보십시오 . 아래에서 볼 수 있듯이 제 경우에는 효과가있었습니다.

jQuery.noConflict(); 
jQuery('#myModal').modal('show'); 

jQuery.noConflict (); jQuery ( '# myModal'). modal ( 'show') 일 때; 작동하지 않습니다. jQuery를 두 번 포함했기 때문입니다. jQuery를 2 번 포함하면 모달이 작동하지 않습니다. 내 경우와 마찬가지로이 경우 문제가 해결됩니다.

또한이 링크로 이동할 수 있습니다

JQuery를 호출하여 부트 스트랩 모델 창이 표시되지 않음


4

시험

$("#myModal").modal("toggle")

id가 myModal 인 모달을 열거 나 닫습니다.

위의 작업이 작동하지 않으면 bootstrap.js가 다른 js 파일로 재정의되었음을 의미합니다. 여기에 해결책이 있습니다

1 :-bootstrap.js를 맨 아래로 이동하면 다른 js 파일보다 우선합니다.

2 :-순서가 아래와 같은지 확인하십시오

<script src="plugins/jQuery/jquery-2.2.3.min.js"></script>
<!-- Other js files -->
<script src="plugins/jQuery/bootstrap.min.js"></script>

4
<form id="myform" class="form-wizard">
    <h2 class="form-wizard-heading">BootStap Wizard Form</h2>
    <input type="text" value=""/>
    <input type="submit" id="submitButton"/>
</form>

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel">Modal header</h3>
    </div>
    <div class="modal-body">
        <p>One fine body…</p>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
        <button class="btn btn-primary">Save changes</button>
    </div>
</div>

아래 코드를 사용하여 모달을 시작할 수 있습니다.

$(document).ready(function(){
    $("#submitButton").click(function(){
        $("#myModal").modal();
    });
});

1

이 시도

myModal1은 모달의 ID입니다.

$('#myModal1').modal({ show: true });

0
<script type="text/javascript">
    $(function () {
        $("mybtn").click(function () {
            $("#my-modal").modal("show");
        });
    });
</script>

3
이미 답변이있는 질문에 답변 할 때는 기존 답변을 확장하십시오. 또한 코드가 질문에 어떻게 대답하는지에 대한 설명을 포함하는 것이 일반적으로 좋습니다.
Chris Camaratta

0

부트 스트랩 4.3- 여기

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.