মডেলটি বন্ধ করতে বুটস্ট্র্যাপ মডেলের বাইরে ক্লিক অক্ষম করুন


440

আমি কয়েকটা বুটস্ট্র্যাপ 'মডেলস' নিয়ে একটি বুটস্ট্র্যাপ ওয়েবসাইট তৈরি করছি। আমি ডিফল্ট কিছু বৈশিষ্ট্য কাস্টমাইজ করার চেষ্টা করছি।

সমস্যা হ'ল এটি; আপনি পটভূমিতে ক্লিক করে মডেলটি বন্ধ করতে পারেন। যাইহোক এই বৈশিষ্ট্যটি অক্ষম করার আছে? কেবলমাত্র মডেলগুলিতে?

বুটস্ট্র্যাপ মডেল পৃষ্ঠা


আপনি কি দয়া করে আমাকে বলতে পারবেন যে এই পরিস্থিতিতে কোন ইভেন্টটি বলা হয়। $ সুযোগ.ok, $ সুযোগ। submit আমি জমা দেওয়ার এবং বাতিল করার জন্য বাস্তবায়ন করেছি তবে আমি এই পরিস্থিতিতে ঘটানো ঘটনাটি জানি না।
লাভটোকোড

উত্তর:


912

অপশন অধ্যায়টিতে, আপনি যে পৃষ্ঠাটি লিঙ্ক করেছেন তাতে backdropবিকল্পটি দেখতে পাবেন । মান সহ এই বিকল্পটি পাস করা মডেলগুলি 'static'বন্ধ করা আটকাবে।
@ পেড্রোভেনার মন্তব্যগুলিতে ইঙ্গিত করার সাথে সাথে আপনি চাপ দিয়ে মোডালটি {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>`

অন্যান্য নিয়ন্ত্রণের জন্য ক্লিকগুলি নিবন্ধিত করতে পটভূমিকে সক্ষম করার কোনও উপায় আছে তবে কেবল মডেলগুলি বন্ধ না করে?
বিবেকানন

2
@ মিস্টিকাসিড আপনার জন্য এটি একটি নতুন প্রশ্ন জিজ্ঞাসা করা উচিত। আপনার সমস্যা এবং অনুরূপ সমাধান অনুসন্ধান করা অন্যান্য ব্যবহারকারীদের সাথে আপনাকে সহায়তা করা আরও ভাল।
ডগুইটা


3
একটি সাধারণ তবে বিরক্তিকর সমস্যা ছিল, $('#modal').modal('show');আশা করি এর সাহায্যের আগে আপনি jquery লাইনটি রেখেছেন তা নিশ্চিত করুন !
cwiggo

3
cwiggo আপনি মডেল use ('# মডেল') ব্যবহার করেন না mod মডেল ('শো'); - আপনি কেবল। মডেল ({ব্যাকড্রপ: 'স্ট্যাটিক', কীবোর্ড: মিথ্যা}) ব্যবহার করুন - কোনও শো বা টগল কমান্ড ছাড়াই
টিভি-সি-15

135

এটি সবচেয়ে সহজ

আপনি আপনার মডেল আচরণটি ডেটা-কীবোর্ড এবং ডেটা-ব্যাকড্রপ সংজ্ঞায়িত করতে পারেন।

<div id="modal" class="modal hide fade in" data-keyboard="false" data-backdrop="static">

2
এটিই আমার পক্ষে কাজ করেছে। জেএস-এ বিকল্পগুলি পাস করার জন্য কেবল কোনও কারণে আমার পক্ষে কাজ করা হয়নি (সংস্করণ 3.3.7)। অন্য কেউ যদি সংশোধন করে তবে আমি বুটস্ট্র্যাপ টিমের সাথে একটি সমস্যা খুলতে পারি।
dchacke

প্রথমে, জেএস সংস্করণ ব্যবহার করা আমার পক্ষে খুব কার্যকর হয়নি কারণ আমি মডেলটি খোলার পরে আমি সবকিছু সেট করেছিলাম। আপনার এটি করা উচিত "$ ('# মডেলফর্ম') mod মডেল ({ব্যাকড্রপ: 'স্ট্যাটিক', কীবোর্ড: মিথ্যা});" এর আগে "$ ('# মডেলফর্ম')। মডেল ('শো');"। কিন্তু আমার জন্য, সর্বোত্তম উত্তর থেকে @ ಅನಿಲ್
লুকাস

এটি আমার পক্ষে কাজ করেছে। মডেল data-backdrop="static"সংজ্ঞাতে বিকল্পটি রাখা, অন্য উত্তরে বর্ণিত মোডালটি খোলার মতো ট্রিগার বোতামটি আমার পক্ষে কাজ করে না।
টিএসমিথ

99

আপনি এই জাতীয় বৈশিষ্ট্য ব্যবহার করতে পারেন: data-backdrop="static"বা জাভাস্ক্রিপ্ট সহ:

$('#myModal').modal({
    backdrop: 'static',
    keyboard: false  // to prevent closing with Esc button (if you want this too)
})

এই উত্তরটিও দেখুন: টুইটার বুটস্ট্র্যাপ মডেল উইন্ডোটি বন্ধ হওয়া থেকে বঞ্চিত করুন


<ডিভিডি আইডি = "মডেল" শ্রেণি = "" ডেটা-কীবোর্ড = "মিথ্যা" ডেটা-ব্যাকড্রপ = "স্থিতিশীল"> এ মডেল লুকানো বিবর্ণ এটি সেরা উত্তর।
কমলেশ

34

আমার অ্যাপ্লিকেশনটিতে, আমি jQuery এর মাধ্যমে বুটস্ট্র্যাপ মডেল দেখানোর জন্য নীচের কোডের টুকরাটি ব্যবহার করছি।

 $('#myModall').modal({
                        backdrop: 'static',
                        keyboard: true, 
                        show: true
                }); 

এটি উত্তম উত্তর কারণ এই কোডটি তখনই কাজ করবে যখন মডেল খোলা থাকবে।
দীপক ধোলিয়ান

32

তুমি ব্যবহার করতে পার

$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.keyboard =  false;

ডিফল্ট আচরণ পরিবর্তন করতে।


দুর্দান্ত উত্তর, কারণ এটি সমস্ত মডেলের জন্য পরিস্থিতি পরিচালনা করে।
হারিস উর রেহমান

1
বুটস্ট্র্যাপ ভি 4-তে সিনট্যাক্সটি হ'ল: f .fn.modal.prototype.constructor.Constructor.Default.backDP = 'স্থিতিশীল';
গ্যারি ইংরাজী

11

মডেল বন্ধ করতে বুটস্ট্র্যাপ মডেল অঞ্চলের বাইরে ক্লিক অক্ষম করার দুটি উপায় রয়েছে-

  1. জাভাস্ক্রিপ্ট ব্যবহার করে

    $('#myModal').modal({
       backdrop: 'static',
       keyboard: false
    });
  2. এইচটিএমএল ট্যাগে ডেটা অ্যাট্রিবিউট ব্যবহার করে

    data-backdrop="static" data-keyboard="false" //write this attributes in that button where you click to open the modal popup.

9

এটা পরীক্ষা করো ::

$(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>


6

অন্য কোনও বিকল্প যদি আপনি না জানেন যে মডেলটি ইতিমধ্যে খোলা হয়েছে কিনা বা এখনও নেই এবং আপনাকে মডেল বিকল্পগুলি কনফিগার করতে হবে:

বুটস্ট্র্যাপ ৩.৪

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
    }
}

বুটস্ট্র্যাপ 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
    }
}

বিকল্পগুলি _ কনফিগ-এ পরিবর্তন করুন


বুটস্ট্র্যাপ 4 + এর _setEscapeEvent()পরিবর্তে এটি হওয়া উচিত .escape()?
ইভান বাচার

@ ইভানবাচার .escape ()
কাভা

5

আমার জন্য যে সমাধানটি কাজ করে তা নিম্নলিখিত:

$('#myModal').modal({backdrop: 'static', keyboard: false})  

ব্যাকড্রপ: বাইরের ইভেন্টের ক্লিকটি অক্ষম করে

কীবোর্ড: স্কেপ কীওয়ার্ড ইভেন্টটি অক্ষম করে


4
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-keyboard="false" data-backdrop="static">

এটি ব্যবহার করে দেখুন, আমার অ্যাপ্লিকেশন বিকাশের সময় ... আমি সেই সমস্যাটিও পূরণ করেছিলাম যা একটি মডেল অ্যাট্রিবিউট => data-keyboard="true", => এর জন্য ডিফল্ট মানগুলি হয়data-backdrop="non static"

আশা করি এটা তোমাকে সাহায্য করবে!



1

এই সমাধানগুলির কোনওোটাই আমার পক্ষে কাজ করেনি।

আমার একটি শর্ত এবং শর্তাবলী মডেল রয়েছে যা আমি চালিয়ে যাওয়ার আগে লোকদের পর্যালোচনা করতে বাধ্য করতে চেয়েছিলাম ... বিকল্পগুলি অনুসারে ডিফল্ট "স্থিতিশীল" এবং "কীবোর্ড" পৃষ্ঠাটি নীচে স্ক্রোল করা অসম্ভব করে দিয়েছে কারণ শর্তাদি কয়েকটি পৃষ্ঠা রয়েছে লগ, অচল আমার জন্য উত্তর ছিল না।

সুতরাং পরিবর্তে আমি মডেলের ক্লিক পদ্ধতিটি আবদ্ধ করতে গিয়েছিলাম, নিম্নলিখিতটি দিয়ে আমি পছন্দসই প্রভাব পেতে সক্ষম হয়েছি।

$('.modal').off('click');



0
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.
})

0

আপনি যদি @ এনজি-বুটস্ট্র্যাপ ব্যবহার করছেন তবে নিম্নলিখিতটি ব্যবহার করুন:

উপাদান

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>

এই কোডটি ব্যবহার করে কৌণিক 9 তে পরীক্ষা করা হয়েছিল:

  1. "@ এনজি-বুটস্ট্র্যাপ / এনজি-বুটস্ট্র্যাপ": "^ 6.1.0",

  2. "বুটস্ট্র্যাপ": "^ 4.4.1",


0

আপনি jQuery ব্যবহার করে সমস্ত মডেলের বাইরের ক্লিকটি অক্ষম করতে চাইলে এটি ব্যবহার করুন। এই স্ক্রিপ্টটি jQuery এর পরে আপনার জাভাস্ক্রিপ্টে যুক্ত করুন।

jQuery(document).ready(function () {
    jQuery('[data-toggle="modal"]').each(function () {
       jQuery(this).attr('data-backdrop','static');
       jQuery(this).attr('data-keyboard','false');
    });
});

-1

আপনি JQuery ব্যবহার না করেও এটি করতে পারেন, যেমন:

<div id="myModal">

var modal = document.getElementById('myModal');
modal.backdrop = "static";
modal.keyboard = false;

-2

আপনি নিজের স্ক্রিনের প্রস্থ চান নীচের সিএসএস যুক্ত করুন।

@media (min-width: 991px){
    .modal-dialog {
        margin: 0px 179px !important;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.