私は非常に初心者なので、Twitter bootstrap modalを使用して(おそらく明白な)何かを監督していると思います。私がやろうとしているのは、モバイルでのみ起動するモーダルを取得することです。これは、モーダルdivに.visible-phoneクラスを追加すると正常に機能します。ここまでは順調ですね。しかし、それから私はそれが機能することを望みます。つまり、Xボタンで閉じることができます。そして、ボタンを機能させることができません。
<div class="modal visible-phone" id="myModal">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h3>text introductory<br>want to navigate to...</h3>
</div>
<div class="modal-body">
<ul class="nav">
<li> ... list of links here </li>
</ul>
</div>
</div>
Htmlの下部にjquery.js(最初)とbootstrap.modal.jsおよびbootstrap.transition.jsを配置します。実際、すべてのbootstrap jsモジュール(インクルードを見逃さないように)。私はjsを経験していません。
本当に愚かなQを提起した場合はご容赦ください。ログでこの特定の状況に対する答えが見つかりませんでした。
$('#myModal').modal('hide')
はそれを行う必要があります
bootstrapモーダルダイアログを閉じるときに問題が発生しました。
$('#myModal').modal('show');
次のリンクでダイアログを開くと、この問題が解決しました。
<a href="#myModal" data-toggle="modal">Open my dialog</a>
初期化を忘れないでください:
$('#myModal').modal({show: false});
また、閉じるボタンには次の属性を使用しました。
data-dismiss="modal" data-target="#myModal"
クラスhideをモーダルに追加します
<!-- Modal Demo -->
<div class="modal hide" id ="myModal" aria-hidden="true" >
Javascriptコード
<!-- Use this to hide the modal necessary for loading and closing the modal-->
<script>
$(function(){
$('#closeModal').click(function(){
$('#myModal').modal('hide');
});
});
</script>
<!-- Use this to load the modal necessary for loading and closing the modal-->
<script>
$(function () {
$('#myModal').modal('show');
});
</script>
。modal( 'hide') モーダルを手動で非表示にします。次のコードを使用して、bootstrapモデルを閉じます
$('#myModal').modal('hide');
動作を確認してください codepen here
または
ここで試してみてください
$(function () {
$(".custom-close").on('click', function() {
$('#myModal').modal('hide');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<a class="custom-close"> My Custom Close Link </a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
ボタンがdata-targetで閉じるモーダルを正確に指定してみてください。したがって、ボタンは次のようになります。
<button class="close" data-dismiss="modal" data-target="#myModal">×</button>
また、他のものを安全に削除できるように、bootstrap.modal.jsのみが必要です。
編集:これが機能しない場合は、可視電話クラスを削除し、電話ではなくPCブラウザーでテストします。これにより、javascriptエラーが発生しているかどうか、または互換性の問題などが表示されます。
編集:デモコード
<html>
<head>
<title>Test</title>
<link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/Scripts/bootstrap.modal.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
if( navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/webOS/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
) {
$("#myModal").modal("show");
}
$("#myModalClose").click(function () {
$("#myModal").modal("hide");
});
});
</script>
</head>
<body>
<div class="modal hide" id="myModal">
<div class="modal-header">
<a class="close" id="myModalClose">×</a>
<h3>text introductory<br>want to navigate to...</h3>
</div>
<div class="modal-body">
<ul class="nav">
<li> ... list of links here </li>
</ul>
</div>
</div>
</body>
</html>
ドキュメントによると、非表示/切り替えが機能するはずです。しかし、そうではありません。
ここに私がそれをした方法があります
$('#modal-id').modal('toggle'); //Hide the modal dialog
$('.modal-backdrop').remove(); //Hide the backdrop
$("body").removeClass( "modal-open" ); //Put scroll back on the Body
これを試してください。
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
IPhoneまたはデスクトップでも同じ問題が発生しましたが、閉じるボタンを押したときにダイアログを閉じることができませんでした。
<button>
タグはクリック可能なボタンを定義し、次のように要素のtype属性を指定する必要があることがわかりました。
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
bootstrapモーダルのサンプルコードを確認してください: BootStrap javascript Page
ページの更新なしでモーダルを閉じるだけでなく、Enterキーを押すとモーダルが送信され、更新なしで閉じるスニペット
私のサイトには複数のモーダルを設定できますが、一部のモーダルは送信時にデータを処理し、一部のモーダルでは処理しません。私がやることは、処理を行うモーダルごとに一意のIDを作成することです。たとえば私のウェブページで:
HTML(モーダルフッター):
<div class="modal-footer form-footer"><br>
<span class="caption">
<button id="PreLoadOrders" class="btn btn-md green btn-right" type="button" disabled>Add to Cart <i class="fa fa-shopping-cart"></i></button>
<button id="ClrHist" class="btn btn-md red btn-right" data-dismiss="modal" data-original-title="" title="Return to Scan Order Entry" type="cancel">Cancel <i class="fa fa-close"></i></a>
</span>
</div>
jQUERY:
$(document).ready(function(){
// Allow enter key to trigger preloadorders form
$(document).keypress(function(e) {
if(e.which == 13) {
e.preventDefault();
if($(".trigger").is(".ok"))
$("#PreLoadOrders").trigger("click");
else
return;
}
});
});
ご覧のとおり、この送信は処理を実行するため、このモーダル用にこのjQueryが用意されています。このウェブページ内に別のモーダルがありますが、処理は実行されず、1つのモーダルが一度に開いているため、すべてのページが取得するグローバルphp/jsスクリプトに別の$(document).ready()
を配置し、モーダルの閉じるボタンにクラスを渡します: ".modal-close"
:
HTML:
<div class="modal-footer caption">
<button type="submit" class="modal-close btn default" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
jQuery(include.global):
$(document).ready(function(){
// Allow enter key to trigger a particular button anywhere on page
$(document).keypress(function(e) {
if(e.which == 13) {
if($(".modal").is(":visible")){
$(".modal:visible").find(".modal-close").trigger('click');
}
}
});
});
同時に表示されるモーダルがほとんどない場合は、属性data-toggle
およびdata-target
でインモーダルボタンのターゲットモーダルを指定できます。
<div class="modal fade in" id="sendMessageModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header text-center">
<h4 class="modal-title">Modal Title</h4>
<small>Modal Subtitle</small>
</div>
<div class="modal-body">
<p>Modal content text</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#sendMessageModal">Close</button>
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#sendMessageModal">Send</button>
</div>
</div>
</div>
</div>
モーダルコードの外側のどこかに、別のトグルボタンがあります。
<a href="index.html#" class="btn btn-default btn-xs" data-toggle="modal" data-target="#sendMessageModal">Resend Message</a>
これらのボタンが非表示になっている間、ユーザーはインモーダルトグルボタンをクリックできず、属性"modal"
のオプションdata-toggle
で正しく動作します。このスキームは自動的に機能します!