বুটস্ট্র্যাপ মডেলটি খোলা আছে কিনা তা কীভাবে পরীক্ষা করতে হয়, তাই আমি jquery যাচাইকরণ ব্যবহার করতে পারি


111

আমার কেবলমাত্র কোনও মডেল খোলা থাকলে একটি বৈধতা তৈরি করা দরকার, কারণ আমি যদি এটি খুলি, এবং তারপরে আমি এটি বন্ধ করে দিই, এবং আমি বোতামটি টিপুন যা মোডালটি খোলে এটি কাজ করে না কারণ এটি jquery বৈধতা তৈরি করছে, তবে নয় মডেল খারিজ করা হয়েছে কারণ দেখাচ্ছে।

সুতরাং আমি যদি একটি মডেল খোলা থাকে তবে আমি বৈধতা দেই যদি একটি jquery বিজ্ঞাপন করতে চান, এটি কি সম্ভব?

<script>
$(document).ready(function(){

var validator =$('#form1').validate(
 {
  ignore: "",
  rules: {

usu_login: {
  required: true
},
usu_password: {
  required: true
},
usu_email: {
  required: true
},
usu_nombre1: {
  required: true
},
usu_apellido1: {
  required: true
},
usu_fecha_nac: {
  required: true
},
usu_cedula: {
  required: true
},
usu_telefono1: {
  required: true
},
rol_id: {
  required: true
},
dependencia_id: {
  required: true
},
  },

  highlight: function(element) {
$(element).closest('.grupo').addClass('has-error');
        if($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length == 0)
        {
            $(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function(index, tab)
            {
                var id = $(tab).attr("id");

                $('a[href="#' + id + '"]').tab('show');
            });
        }
  },
  unhighlight: function(element) {
$(element).closest('.grupo').removeClass('has-error');
  }
 });

}); // end document.ready

</script>

উত্তর:


183

@ গ্রেগপেটিত উল্লেখ করেছেন রেসের শর্তটি এড়াতে, কেউ এটি ব্যবহার করতে পারেন:

($("element").data('bs.modal') || {})._isShown    // Bootstrap 4
($("element").data('bs.modal') || {}).isShown     // Bootstrap <= 3

টুইটার বুটস্ট্র্যাপ মডেল হিসাবে আলোচনা করা হয়েছে - ইসশাউন

যখন মডেলটি এখনও খোলেনি , .data('bs.modal')ফিরে আসে undefined, সুতরাং || {}- যা isShown(মিথ্যা) মান তৈরি করবে undefined। আপনি যদি কঠোরতার মধ্যে থাকেন তবে কেউ তা করতে পারে($("element").data('bs.modal') || {isShown: false}).isShown


2
এই একটি সমস্যা যদি মোডাল নয খোলা, আপনি $ ( "উপাদান") থেকে 'undefined' পাবেন তথ্য ( 'bs.modal') হয়।
Flezcano

._isShown আমার জন্য কাজ, আমি বুটস্ট্র্যাপ ব্যবহার করছি 4 আলফা
Iftikar Urrhman খান

8
বুটস্ট্র্যাপ 4 এ, এটি _isShownনয় isShown
elquimista

আমি কেবল খতিয়ে দেখছি মডেলটি 'দেখানো' ক্লাস করেছে (বুটস্ট্র্যাপ 4) - আমার যেমন প্রয়োজন তেমন কাজ করে। _এইচাউন কি কোনওভাবে ভাল?
ট্রেইনোসিস

দয়া করে সমাধানটি টাইপ স্ক্রিপ্টে ভাগ করতে পারেন?
সুরজিৎ বিশ্বাস

80

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

$('#myModal').hasClass('in');

inমোডাল খোলা থাকলে বুটস্ট্র্যাপ ক্লাস যুক্ত করে এবং বন্ধ হয়ে গেলে এটি সরিয়ে দেয়


4
বিবর্ণ বিকল্প এবং দ্রুত ক্লিকগুলি বা একটি অ্যাজাক্স কলের মাধ্যমে একটি মডেলকে ট্রিগার করে এটি কিছুটা ভঙ্গুর হতে পারে। বিবর্ণে সময় বিলম্ব দৌড়ের পরিস্থিতি তৈরি করতে পারে। তবুও, বিষয়বস্তু স্থির থাকে এবং ব্যবহারকারীর মিথস্ক্রিয়া চলাকালীন মডেলটি কেবল পপ আপ হয় তবে এটিতে একটি কার্যকর উপায়!
গ্রেগ পেটিট

বুটস্ট্র্যাপ মডেলে রেসের শর্ত এড়ানোর সবচেয়ে নিরাপদ, নিশ্চিত উপায় হ'ল এর shown.bs.modalবা hidden.bs.modalইভেন্টগুলিতে সাবস্ক্রাইব করা । এইভাবে, যখন আপনার ইভেন্টের কোডটি নিয়ন্ত্রণ পায়, আপনি ডায়লগটি খুব স্পর্শকাতর অবস্থায় না হয়ে মারা গেছেন।
এরিক লয়েড

এটি বুটস্ট্র্যাপ সংস্করণ 4 এ বৈধ?
মাহদী আলখতিব

1
@MahdiAlkhatib না, এই বুটস্ট্র্যাপ 4. কাজ করে না আপনি প্রতিস্থাপন করতে পারে 'in'সঙ্গে 'show'বুটস্ট্র্যাপ 4. জন্য
ফিলিপ স্ট্রাটফোর্ড

61

আপনি সরাসরি jQuery ব্যবহার করতে পারেন।

$('#myModal').is(':visible');

1
উত্তর সহজ যখন পছন্দ। যদি আজাক্স ব্যবহার করা হয় তবে আমি এটি পূর্ববর্তী সময়ে ব্যবহার করি এবং চেক এবং মিথ্যা প্রত্যাবর্তন করি, এইভাবে এটি সার্ভারে একাধিক কলকে বাধা দেয়। ধন্যবাদ!
eaglei22

গৃহীত উত্তর অপরিশোধিত বা নাল ফিরে। এটি নির্বিঘ্নে কাজ করেছে। ধন্যবাদ!
অ্যালেক্স

8

কোনও মডেল খোলা আছে কিনা তা পরীক্ষা করে দেখুন

$('.modal:visible').length && $('body').hasClass('modal-open')

একটি ইভেন্ট শ্রোতা সংযুক্ত করতে

$(document).on('show.bs.modal', '.modal', function () {
    // run your validation... ( or shown.bs.modal )
});

6

বুটস্ট্র্যাপ 2, 3 চেক পৃষ্ঠাতে কোনও মডেল খোলা রয়েছে:

if($('.modal.in').length)

সামঞ্জস্যপূর্ণ সংস্করণ বুটস্ট্র্যাপ 2, 3, 4+

if($('.modal.in, .modal.show').length)

কেবল বুটস্ট্র্যাপ 4+

if($('.modal.show').length)

3
আমি বুটস্ট্র্যাপ ব্যবহার করছি 4.1.3এবং এটি showপরিবর্তে ক্লাস যুক্ত করে in
আরিফ হুসেন

4
$("element").data('bs.modal').isShown

মোডালটি আগে না দেখানো হলে কাজ করবে না। আপনাকে একটি অতিরিক্ত শর্ত যুক্ত করতে হবে:

$("element").data('bs.modal')

উত্তরটি প্রথম উপস্থিতিতে বিবেচনা করে উত্তর:

if ($("element").data('bs.modal') && $("element").data('bs.modal').isShown){
... 
}



0

নীচের মতো সাধারণ জিকুয়েরির সাহায্যে জিনিসগুলি কেন জটিল করা হবে।

$('#myModal').on('shown.bs.modal', function (e) {
    console.log('myModal is shown');
    // Your actual function here
})
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.