jquery-ui- কথোপকথন - কীভাবে ডায়ালগের নিকট ইভেন্টে প্রবেশ করা যায়


186

আমি jquery-ui-dialogপ্লাগইন ব্যবহার করছি

আমি যখন কিছু পরিস্থিতিতে ডায়লগটি বন্ধ হয়ে থাকে তখন পৃষ্ঠাটি রিফ্রেশ করার উপায় খুঁজছি।

কথোপকথন থেকে একটি ঘনিষ্ঠ ইভেন্ট ক্যাপচার উপায় আছে?

আমি জানি ক্লোজ বোতামটি ক্লিক করা হলে আমি কোড চালাতে পারি তবে এটি ব্যবহারকারীর দ্বারা পালিয়ে যাওয়া বা উপরে ডান কোণে এক্স বন্ধ করে দেয় না।

উত্তর:


248

আমি এটি পেয়েছি!

আপনি নিম্নলিখিত কোডটি ব্যবহার করে ঘনিষ্ঠ ইভেন্টটি ধরতে পারবেন:

 $('div#popup_content').on('dialogclose', function(event) {
     alert('closed');
 });

স্পষ্টতই আমি যা করতে হবে তার সাথে আমি সতর্কতাটি প্রতিস্থাপন করতে পারি।
সম্পাদনা করুন: Jquery 1.7 হিসাবে, বাঁধাই () চালু হয়েছে ()


3
টাইপো:। $ ( 'DIV আছে # popup_content') বেঁধে ( 'dialogclose', ফাংশন (ইভেন্ট)) {...}
CFNinja

1
এটি সহায়ক তবে $('div#popup_content')ঠিক? আমার ডায়লগটি এভাবে খোলে মনে রেখে আমি এটির পরিবর্তে কী করবjQuery.fn.dialog.open({})
জেক এন

আমি দেখতে পাচ্ছি ডায়ালগটি প্রথমে বন্ধ হয়ে যায় এবং তারপরে সতর্কতাটি উপস্থিত হয়, যদি সবার অবস্থা একই রকম হয় তবে কেউ কি আমাকে সাহায্য করতে পারে যাতে সেই সতর্কতাটি প্রথমে উপস্থিত হয় এবং তারপরে ঠিক আছে ক্লিকের পরে উইন্ডোটি বন্ধ হয়ে যায়? সঠিক আমাকে ....
changeme

5
এটি আবদ্ধ () এর পরিবর্তে () ব্যবহার করার জন্য আপডেট করা উচিত যা এখন অপ্রচলিত।
আরবিজেড 20'14

2
মনে রাখবেন যে যদি কোনও jQuery UI ডায়ালগটি কোনও পৃষ্ঠায় আগে কখনও না খোলা হয়, তবে ডওমে ওভারলে ডিভের অস্তিত্ব থাকবে না। : তাই, আপনি যদি এর পরিবর্তে ভালো কিছু করছেন বিবেচনা করতে পারে$('body').on('dialogclose', '.ui-dialog', function(){...});
thdoan

192

আমি বিশ্বাস করি ডায়ালগটি তৈরি করার সময় আপনি এটিও করতে পারেন (আমার করা একটি প্রকল্পের অনুলিপি করেছেন):

dialog = $('#dialog').dialog({
    modal: true,
    autoOpen: false,
    width: 700,
    height: 500,
    minWidth: 700,
    minHeight: 500,
    position: ["center", 200],
    close: CloseFunction,
    overlay: {
        opacity: 0.5,
        background: "black"
    }
});

বিঃদ্রঃ close: CloseFunction


9
এই উত্তরটি আমার কাছে গৃহীত উত্তরের চেয়ে বেশি সঠিক বলে মনে হচ্ছে। এছাড়াও, সঠিক এপিআই ডকুমেন্টেশনগুলি এখানে পাওয়া যাবে: api.jqueryui.com/dialog/#event-close
ক্রিস গিলাম

2
জ্যাক এন - কাজ করার জন্য আপনাকে 'ক্লোজফানশন' নামক ডায়ালগটিতে অ্যাক্সেসযোগ্য একটি ফাংশন লিখতে হবে, উদাহরণস্বরূপ আপনি লিখতে পারার ঠিক উপরে var CloseFunction = function() { //Do your custom closing stuff here };
অ্যাডাম ডায়ামেন্ট

এটি একটি বিকল্প তবে সময়ে কোডটি বিভিন্ন স্থানে ব্যবহৃত হচ্ছে। আপনি যখন বিভিন্ন প্রসঙ্গে বিভিন্ন আচরণ যুক্ত করতে চান এবং মানকতা পেতে ডায়লগ তৈরির কোডটি পুনরায় ব্যবহার করতে চান তখন নির্বাচিত উত্তরটি কাজ করে।
অমৃতসফট

তোমার overlayদু'বার আছে। এটা কি নেসেসারি ঠিক না?
রেডবিএক্স

1
এটি কাজ করে এবং অবশ্যই এখানে একটি প্রয়োজনীয় এবং দরকারী উত্তর, তবে এটি এক্স বা কোনও কিছুর সাথে বন্ধ হয়ে গেলেই নয়, যে কোনও সময় ডায়লগটি বন্ধ হয়ে গেলে যে কোনও সময় ক্লোজফানশন কোডটি চালায়। সুতরাং আপনি যদি এক্স বা বাতিল বোতামটি দিয়ে ডায়লগটি বন্ধ করার সময় নির্দিষ্ট কোড চালাতে চান তবে এটি অন্য কোনও ঘটনার দ্বারা বন্ধ না হয়ে হয়ে থাকে (যেমন আমার ক্ষেত্রে যখন কোনও জমা দেওয়া ইনপুট সঠিক হিসাবে বৈধ হয়ে থাকে) তবে তা হবে না হবে।
মিকাতো

31
$("#dialog").dialog({
    autoOpen: false,
    resizable: false,
    width: 400,
    height: 140,
    modal: true, 
    buttons: {
        "SUBMIT": function() { 
        $("form").submit();
    }, 
        "CANCEL": function() { 
        $(this).dialog("close");
    } 
    },
    close: function() {
      alert('close');
    }
});

21
$( "#dialogueForm" ).dialog({
              autoOpen: false,
              height: "auto",
              width: "auto",
              modal: true,
                my: "center",
                at: "center",
                of: window,
              close : function(){
                  // functionality goes here
              }  
              });

"ক্লোজ" ডায়ালগের সম্পত্তি একই জন্য ঘনিষ্ঠ ইভেন্ট দেয়।


16

আপনি এটি চেষ্টা করতে পারেন

$("#dialog").dialog({
            autoOpen: false,
            resizable: true,
            height: 400,
            width: 150,
            position: 'center',
            title: 'Term Sheet',
            beforeClose: function(event, ui) { 
               console.log('Event Fire');
            },
            modal: true,
            buttons: {
                "Submit": function () {
                    $(this).dialog("close");
                },
                "Cancel": function () {
                    $(this).dialog("close");
                }
            }
        });

10

এটিই আমার পক্ষে কাজ করেছিল ...

$('#dialog').live("dialogclose", function(){
   //code to run on dialog close
});

8

JQuery 1.7 হিসাবে, .on () পদ্ধতিটি কোনও নথিতে ইভেন্ট হ্যান্ডলার সংযুক্ত করার জন্য পছন্দসই পদ্ধতি।

কারণ বাস্তবে কেউ ব্যবহার করে কোনও উত্তর তৈরি করেনি। on()পরিবর্তে bind()আমি একটি তৈরি করার সিদ্ধান্ত নিয়েছে।

$('div#dialog').on('dialogclose', function(event) {
     //custom logic fired after dialog is closed.  
});


4

যদি আপনি যে উইন্ডোর কথা বলছেন তার ধরণটি যদি আমি বুঝতে পারি তবে $ (উইন্ডো)। ইউনলোড () (ডায়লগ উইন্ডোটির জন্য) আপনাকে আপনার প্রয়োজনীয় হুকটি দেবে না ?

(এবং যদি আমি ভুল বুঝেছি এবং আপনি পপ-আপ ব্রাউজার উইন্ডোর পরিবর্তে সিএসএসের মাধ্যমে তৈরি একটি ডায়ালগ বক্সের কথা বলছেন, তবে সেই উইন্ডোটি বন্ধ করার সমস্ত উপায়গুলি এমন উপাদান যা আপনি ক্লিক হ্যান্ডারদের নিবন্ধিত করতে পারেন could)

সম্পাদনা: আহ্, আমি এখন দেখছি আপনি সিএসএসের মাধ্যমে তৈরি jquery-ui কথোপকথনের কথা বলছেন। আপনি এক্সটি হুক করতে পারেন যা উইন্ডোটি বন্ধ করে ক্লাস ইউআই-ডায়ালগ-শিরোনামবার-ক্লোজ সহ এলিমেন্টের জন্য ক্লিক হ্যান্ডলারের নিবন্ধকরণ করে ।

আরও দরকারী, সম্ভবত, আপনি কীভাবে তা খুঁজে বের করবেন কীভাবে তা বলছেন। ডায়ালগটি প্রদর্শনের সময়, কেবল ফায়ারব্যাগটি পপ করুন এবং উইন্ডোটি বন্ধ করতে পারে এমন উপাদানগুলি পরীক্ষা করুন । আপনি কীভাবে তাদের সংজ্ঞায়িত করা হয়েছে তা তাত্ক্ষণিকভাবে দেখতে পাবেন এবং ক্লিক হ্যান্ডলারদের নিবন্ধ করার জন্য আপনাকে যা দেয় তা আপনাকে দেয়।

সুতরাং আপনার প্রশ্নের সরাসরি উত্তর দিতে আমি বিশ্বাস করি যে উত্তরটি হ'ল "না" - এমন কোনও ঘনিষ্ঠ ইভেন্ট নেই যা আপনি হুক করতে পারেন, তবে "হ্যাঁ" - আপনি ডায়ালগ বক্সটি মোটামুটি সহজেই বন্ধ করার সমস্ত উপায় হুক করতে পারেন এবং পেতে পারেন তুমি কি চাও.


আরে অ্যান্ডি আমি jquery-ui থেকে ডায়লগটি উপভোগ করছি যা CSS এবং জাভাস্ক্রিপ্টের মাধ্যমে তৈরি। কোডটি দেখে আমি মনে করি আমার জন্য সেখানে একটি হুক আছে তবে আমি কীভাবে এটিতে যেতে পারি তা জানি না।
ব্রনি 13

2

আপনি যে কোনও আইটেমের জন্য সমাপনী ইভেন্টটি ক্যাপচারের জন্য নিম্নলিখিত কোডটি চেষ্টা করতে পারেন: পৃষ্ঠা, ডায়ালগ ইত্যাদি

$("#dialog").live('pagehide', function(event, ui) {
      $(this).hide();
});

1
কেবলমাত্র .on ()
সিএসফাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.