ฉันกำลังทำเว็บไซต์ bootstrap โดยใช้ 'Modals' สองสาม Bootstrap ฉันกำลังพยายามปรับแต่งคุณสมบัติเริ่มต้นบางอย่าง
ปัญหาคือสิ่งนี้ คุณสามารถปิดคำกริยาโดยคลิกที่พื้นหลัง อย่างไรก็ตามมีการปิดใช้งานคุณลักษณะนี้หรือไม่ เกี่ยวกับ modifc modals เท่านั้น?
ฉันกำลังทำเว็บไซต์ bootstrap โดยใช้ 'Modals' สองสาม Bootstrap ฉันกำลังพยายามปรับแต่งคุณสมบัติเริ่มต้นบางอย่าง
ปัญหาคือสิ่งนี้ คุณสามารถปิดคำกริยาโดยคลิกที่พื้นหลัง อย่างไรก็ตามมีการปิดใช้งานคุณลักษณะนี้หรือไม่ เกี่ยวกับ modifc modals เท่านั้น?
คำตอบ:
ในบทตัวเลือกในหน้าเว็บที่คุณเชื่อมโยงคุณจะเห็นbackdrop
ตัวเลือก ผ่านตัวเลือกนี้ด้วยค่า'static'
จะป้องกันไม่ให้ปิด modal
ในฐานะที่เป็น @PedroVagner ชี้กับความเห็นของคุณยังสามารถส่งผ่านเพื่อป้องกันการปิดกิริยาโดยการกด {keyboard: false}
Esc
หากคุณเปิดโมดอลโดย js ให้ใช้:
$('#myModal').modal({backdrop: 'static', keyboard: false})
หากคุณกำลังใช้คุณสมบัติข้อมูลให้ใช้:
<button data-target="#myModal" data-toggle="modal" data-backdrop="static" data-keyboard="false">
Launch demo modal
</button>`
$('#modal').modal('show');
หวังว่านี่จะช่วยได้!
นี่เป็นวิธีที่ง่ายที่สุด
คุณสามารถกำหนดพฤติกรรมการใช้คำสั่งกำหนด data-keyboard และ data-Backdrop
<div id="modal" class="modal hide fade in" data-keyboard="false" data-backdrop="static">
data-backdrop="static"
เลือกบนคำจำกัดความของคำกริยาไม่ใช่ปุ่มทริกเกอร์ที่เปิดคำกริยาตามที่ระบุในคำตอบอื่น
คุณสามารถใช้คุณลักษณะเช่นนี้: data-backdrop="static"
หรือกับ javascript:
$('#myModal').modal({
backdrop: 'static',
keyboard: false // to prevent closing with Esc button (if you want this too)
})
ดูคำตอบนี้ด้วย: ไม่อนุญาตให้ปิด twitter bootstrap หน้าต่าง modal
ในแอปพลิเคชันของฉันฉันใช้โค้ดด้านล่างเพื่อแสดง Bootstrap modal ผ่าน jQuery
$('#myModall').modal({
backdrop: 'static',
keyboard: true,
show: true
});
คุณสามารถใช้ได้
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.keyboard = false;
เพื่อเปลี่ยนพฤติกรรมเริ่มต้น
มีสองวิธีในการปิดใช้งานการคลิกนอกพื้นที่รุ่น bootstrap เพื่อปิด modal-
ใช้ javascript
$('#myModal').modal({
backdrop: 'static',
keyboard: false
});
ใช้ data data ในแท็ก HTML
data-backdrop="static" data-keyboard="false" //write this attributes in that button where you click to open the modal popup.
ชำระเงินนี้ ::
$(document).ready(function() {
$("#popup").modal({
show: false,
backdrop: 'static'
});
$("#click-me").click(function() {
$("#popup").modal("show");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/css/bootstrap.css" rel="stylesheet"/>
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.1.0/css/bootstrap-combined.min.css" rel="stylesheet">
</head>
<body>
<div class="modal" id="popup" style="display: none;">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Standard Selectpickers</h3>
</div>
<div class="modal-body">
<select class="selectpicker" data-container="body">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</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>
<a id="click-me" class="btn btn-primary">Click Me</a>
</body>
<script type="text/javascript" src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.1.0/js/bootstrap.min.js"></script>
</html>
ตัวเลือกอื่นหากคุณไม่ทราบว่ามีการเปิดใช้งานโมดัลแล้วหรือยังและคุณจำเป็นต้องกำหนดค่าตัวเลือกโมดัล:
Bootstrap 3.4
var $modal = $('#modal');
var keyboard = false; // Prevent to close by ESC
var backdrop = 'static'; // Prevent to close on click outside the modal
if(typeof $modal.data('bs.modal') === 'undefined') { // Modal did not open yet
$modal.modal({
keyboard: keyboard,
backdrop: backdrop
});
} else { // Modal has already been opened
$modal.data('bs.modal').options.keyboard = keyboard;
$modal.data('bs.modal').options.backdrop = backdrop;
if(keyboard === false) {
$modal.off('keydown.dismiss.bs.modal'); // Disable ESC
} else { //
$modal.data('bs.modal').escape(); // Resets ESC
}
}
Bootstrap 4.3+
var $modal = $('#modal');
var keyboard = false; // Prevent to close by ESC
var backdrop = 'static'; // Prevent to close on click outside the modal
if(typeof $modal.data('bs.modal') === 'undefined') { // Modal did not open yet
$modal.modal({
keyboard: keyboard,
backdrop: backdrop
});
} else { // Modal has already been opened
$modal.data('bs.modal')._config.keyboard = keyboard;
$modal.data('bs.modal')._config.backdrop = backdrop;
if(keyboard === false) {
$modal.off('keydown.dismiss.bs.modal'); // Disable ESC
} else { //
$modal.data('bs.modal').escape(); // Resets ESC
}
}
เปลี่ยนตัวเลือกเป็น _config
_setEscapeEvent()
เพราะ.escape()
อะไร?
วิธีแก้ปัญหาสำหรับฉันมีดังต่อไปนี้:
$('#myModal').modal({backdrop: 'static', keyboard: false})
ฉากหลัง: ปิดการใช้งานกิจกรรมคลิกด้านนอก
แป้นพิมพ์: ปิดใช้งานเหตุการณ์คำหลักสเคป
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-keyboard="false" data-backdrop="static">
ลองสิ่งนี้ในระหว่างการพัฒนาแอปพลิเคชันของฉัน ... ฉันเจอปัญหาที่ค่าเริ่มต้นสำหรับ model attribute => data-keyboard="true"
, =>data-backdrop="non static"
หวังว่านี่จะช่วยคุณได้!
ลองสิ่งนี้:
<div
class="modal fade"
id="customer_bill_gen"
data-keyboard="false"
data-backdrop="static"
>
ไม่มีวิธีแก้ปัญหาเหล่านี้สำหรับฉัน
ฉันมีข้อกำหนดในการให้บริการที่ฉันต้องการบังคับให้คนตรวจสอบก่อนดำเนินการต่อ ... ค่าเริ่มต้น "คงที่" และ "แป้นพิมพ์" ตามตัวเลือกทำให้ไม่สามารถเลื่อนหน้าลงได้เนื่องจากข้อกำหนดและเงื่อนไขเป็นเพียงไม่กี่หน้า บันทึกแบบคงที่ไม่ใช่คำตอบสำหรับฉัน
ดังนั้นแทนที่จะไปผูกเมธอดคลิกบนโมดัลแทนด้วยวิธีการต่อไปนี้ฉันสามารถรับเอฟเฟกต์ที่ต้องการได้
$('.modal').off('click');
backdrop: 'static'
https://getbootstrap.com/docs/3.3/javascript/#modals-options
ระบุ
static
ฉากหลังที่ไม่ปิดคำกริยาเมื่อคลิก
You can Disallow closing of #signUp (This should be the id of the modal) modal when clicking outside of modal.
As well as on ESC button.
jQuery('#signUp').on('shown.bs.modal', function() {
jQuery(this).data('bs.modal').options.backdrop = 'static';// For outside click of modal.
jQuery(this).data('bs.modal').options.keyboard = false;// For ESC button.
})
หากคุณใช้@ ng-bootstrap ให้ใช้สิ่งต่อไปนี้:
ตัวแทน
import { Component, OnInit } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.scss'],
})
export class ExampleComponent implements OnInit {
constructor(
private ngbModal: NgbModal
) {}
ngOnInit(): void {
}
openModal(exampleModal: any, $event: any) {
this.ngbModal.open(exampleModal, {
size: 'lg', // set modal size
backdrop: 'static', // disable modal from closing on click outside
keyboard: false, // disable modal closing by keyboard esc
});
}
}
แบบ
<div (click)="openModal(exampleModal, $event)"> </div>
<ng-template #exampleModal let-modal>
<div class="modal-header">
<h5 class="modal-title">Test modal</h5>
</div>
<div class="modal-body p-3">
<form action="">
<div class="form-row">
<div class="form-group col-md-6">
<label for="">Test field 1</label>
<input type="text" class="form-control">
</div>
<div class="form-group col-md-6">
<label for="">Test field 2</label>
<input type="text" class="form-control">
</div>
<div class="text-right pt-4">
<button type="button" class="btn btn-light" (click)="modal.dismiss('Close')">Close</button>
<button class="btn btn-primary ml-1">Save</button>
</div>
</form>
</div>
</ng-template>
รหัสนี้ทดสอบกับ angular 9 โดยใช้:
"@ ng-bootstrap / ng-bootstrap": "^ 6.1.0",
"bootstrap": "^ 4.4.1",
ใช้สิ่งนี้หากคุณต้องการปิดใช้งานการคลิกด้านนอกสำหรับโมดัลทั้งหมดโดยใช้ jQuery เพิ่มสคริปต์นี้ใน Javascript ของคุณหลังจาก jQuery
jQuery(document).ready(function () {
jQuery('[data-toggle="modal"]').each(function () {
jQuery(this).attr('data-backdrop','static');
jQuery(this).attr('data-keyboard','false');
});
});
คุณสามารถทำได้โดยไม่ต้องใช้ JQuery เช่น:
<div id="myModal">
var modal = document.getElementById('myModal');
modal.backdrop = "static";
modal.keyboard = false;
เพิ่ม CSS ด้านล่างตามที่คุณต้องการความกว้างหน้าจอของคุณ
@media (min-width: 991px){
.modal-dialog {
margin: 0px 179px !important;
}
}