টুইটার বুটস্ট্র্যাপ ব্যবহার করে মডেল / সংলাপে মোছার বিষয়টি নিশ্চিত করবেন?


284

আমার কাছে ডাটাবেস সারিগুলির সাথে আবদ্ধ সারির একটি HTML টেবিল রয়েছে table আমি প্রতিটি সারির জন্য একটি "মুছে ফেলুন সারি" লিঙ্কটি রাখতে চাই তবে আমি ব্যবহারকারীর সাথে আগেই নিশ্চিত করতে চাই।

টুইটার বুটস্ট্র্যাপ মডেল ডায়লগটি ব্যবহার করে এটি করার কোনও উপায় আছে কি?



3
এই প্রশ্নটি চালিয়ে যাওয়ার পরে আমি এই সমস্যার জন্য এ জাতীয় একটি সহজ এবং আরও প্রবাহিত "ফিক্স" দিয়ে চিম-ইন করতে চেয়েছি (আমাকে কী বলে মনে হচ্ছে)। আমি কিছুক্ষণের জন্য এটির সাথে লড়াই করেছি এবং তখন বুঝতে পারি এটি কতটা সহজ হতে পারে: কেবলমাত্র মোডাল সংলাপে প্রকৃত ফর্ম জমা দেওয়ার বোতামটি রাখুন এবং তারপরে ফর্মের জমা বোতামটি নিজেই ডায়ালগ উইন্ডোতে আগুন জ্বালানো ছাড়া কিছুই করে না ... সমস্যা সমাধান হয়ে যায়।
মাইকেল ডোলম্যান

@ জনিজোনস এই উদাহরণটি আমার পক্ষে কাজ করছে না (নিশ্চিতকরণ বার্তাটি প্রথম বোতামটি ক্লিক করার পরে প্রদর্শিত হবে না) - ক্রোমে পরীক্ষিত
egmfrs

উত্তর:


396

GET রেসিপি

এই কাজের জন্য আপনি ইতিমধ্যে উপলব্ধ প্লাগইন এবং বুটস্ট্র্যাপ এক্সটেনশনগুলি ব্যবহার করতে পারেন। অথবা আপনি কেবলমাত্র 3 টি লাইনের কোড দিয়ে নিজের কনফার্মেশন পপআপ তৈরি করতে পারেন । এটা দেখ.

বলুন যে আমাদের এই লিঙ্কগুলি ( data-hrefপরিবর্তে নোট href) বা বোতামগুলি রয়েছে যা আমরা এর জন্য নিশ্চিতকরণ মুছতে চাই:

<a href="#" data-href="delete.php?id=23" data-toggle="modal" data-target="#confirm-delete">Delete record #23</a>

<button class="btn btn-default" data-href="/delete.php?id=54" data-toggle="modal" data-target="#confirm-delete">
    Delete record #54
</button>

এখানে #confirm-deleteআপনার এইচটিএমএলে একটি মডেল পপআপ ডিভ দেখায়। এটিতে "ঠিক আছে" বোতামটি এমনভাবে কনফিগার করা উচিত:

<div class="modal fade" id="confirm-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                ...
            </div>
            <div class="modal-body">
                ...
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <a class="btn btn-danger btn-ok">Delete</a>
            </div>
        </div>
    </div>
</div>

মুছার ক্রিয়াটি নিশ্চিতযোগ্য করে তুলতে এখন আপনার কেবল এই ছোট জাভাস্ক্রিপ্টের প্রয়োজন:

$('#confirm-delete').on('show.bs.modal', function(e) {
    $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
});

সুতরাং show.bs.modalইভেন্টে মুছুন বোতামটি hrefসম্পর্কিত রেকর্ড আইডি সহ URL এ সেট করা আছে।

ডেমো: http://plnkr.co/edit/NePR0BQf3VmKtuMmhVR7?p= পূর্বরূপ


পোষ্ট রেসিপি

আমি বুঝতে পারি যে কিছু ক্ষেত্রে পোস্টের সম্পাদনের প্রয়োজন হতে পারে বা অনুরোধ না করে বরং জেট করুন। এটি খুব বেশি কোড ছাড়াই এখনও বেশ সহজ। এই পদ্ধতির সাথে নীচে ডেমোটি দেখুন:

// Bind click to OK button within popup
$('#confirm-delete').on('click', '.btn-ok', function(e) {

  var $modalDiv = $(e.delegateTarget);
  var id = $(this).data('recordId');

  $modalDiv.addClass('loading');
  $.post('/api/record/' + id).then(function() {
     $modalDiv.modal('hide').removeClass('loading');
  });
});

// Bind to modal opening to set necessary data properties to be used to make request
$('#confirm-delete').on('show.bs.modal', function(e) {
  var data = $(e.relatedTarget).data();
  $('.title', this).text(data.recordTitle);
  $('.btn-ok', this).data('recordId', data.recordId);
});

ডেমো: http://plnkr.co/edit/V4GUuSueuuxiGr4L9LmG?p= পূর্বরূপ


বুটস্ট্র্যাপ 2.3

বুটস্ট্র্যাপ ২.৩ মডেলের জন্য যখন আমি এই প্রশ্নের উত্তর দিচ্ছিলাম তখন আমি তৈরি কোডটির একটি আসল সংস্করণ এখানে।

$('#modal').on('show', function() {
    var id = $(this).data('id'),
        removeBtn = $(this).find('.danger');
    removeBtn.attr('href', removeBtn.attr('href').replace(/(&|\?)ref=\d*/, '$1ref=' + id));
});

ডেমো : http://jsfiddle.net/MjmVr/1595/


1
এটি প্রায় নিখুঁতভাবে কাজ করেও এমনকি ফিডাল সংস্করণে (আমার সাইটের মতো), আইডিটি মডেলের হ্যাঁ বোতামে প্রেরণ করা হয়নি। আমি লক্ষ্য করেছি যে আপনি ? রেফ এর পরিবর্তে & রেফ প্রতিস্থাপনের চেষ্টা করছেন তাই আমি এটি পরিবর্তন করার চেষ্টা করেছি তবে এটি এখনও কাজ করছে না। আমি কি এখানে অন্য কিছু মিস করছি? এটি অন্যথায় দুর্দান্ত তাই আপনার সাহায্যের জন্য টিআইএ!
এসডাব্লুএল

ধন্যবাদ @ ডিএফএসকিউ - এটি সুন্দরভাবে কাজ করেছে। ডায়ালগটি 'না' বোতামটি ক্লিক করে লুকিয়ে নেই তাই আমি মোড়লের পরিবর্তে # টিতে href পরিবর্তন করেছি এবং এটিও কাজ করে। আপনার সাহায্যের জন্য আবার ধন্যবাদ।
এসডাব্লুএল

22
একটি তাত্পর্য হ'ল চূড়ান্ত মোছার অনুরোধটির ফলাফল কোনও পোস্টে তৈরি করা উচিত, আপনি কোনও লিঙ্কের মতো GEt নয়। আপনি যদি জিইটি-তে মুছতে সক্ষম হন, তবে ক্ষতিকারক তৃতীয় পক্ষগুলি সহজেই সাইট বা ইমেলগুলিতে লিঙ্কগুলি নকল করতে পারে যা আপনার ব্যবহারকারীর অজান্তে জিনিসগুলি মুছে ফেলতে পারে। এটি নির্বোধ বলে মনে হতে পারে তবে এমন পরিস্থিতি রয়েছে যেখানে এটি একটি গুরুতর সুরক্ষা সমস্যা হবে।
অ্যারোনএলএস

2
আপনি ভেক্সের দিকে একবার নজর দিতে চাইবেন । আপনি যা জিজ্ঞাসা করছেন তা করতে এত সহজ: jsfiddle.net/adamschwartz/hQump
আদম 18

3
একটি ধ্বংসাত্মক ক্রিয়া সম্পাদন করতে একটি জিইটি ব্যবহারের জন্য ডাউনভোটে প্রলুব্ধ। এমন অনেকগুলি, বিভিন্ন কারণ রয়েছে যা আপনার কখনই করা উচিত নয়।
নিক

158

http://bootboxjs.com/ - বুটস্ট্র্যাপ 3.0.0 এর সাথে সর্বশেষ কাজ

সহজতম উদাহরণ:

bootbox.alert("Hello world!"); 

সাইট থেকে:

গ্রন্থাগারটি তাদের স্থানীয় জাভাস্ক্রিপ্ট সমতুল্য অনুকরণ করার জন্য ডিজাইন করা তিনটি পদ্ধতি প্রকাশ করে। তাদের সঠিক পদ্ধতির স্বাক্ষরগুলি নমনীয় কারণ প্রতিটি লেবেল কাস্টমাইজ করতে এবং ডিফল্ট নির্দিষ্ট করতে বিভিন্ন প্যারামিটার নিতে পারে তবে এগুলিকে সাধারণত এ জাতীয় বলা হয়:

bootbox.alert(message, callback)
bootbox.prompt(message, callback)
bootbox.confirm(message, callback)

এখানে এটির স্নিপেট কার্যকর রয়েছে (নীচে "রান কোড স্নিপেট" ক্লিক করুন):

$(function() {
  bootbox.alert("Hello world!");
});
<!-- required includes -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>

<!-- bootbox.js at 4.4.0 -->
<script src="https://rawgit.com/makeusabrew/bootbox/f3a04a57877cab071738de558581fbc91812dce9/bootbox.js"></script>


2
দুর্ভাগ্যক্রমে, শিরোনাম এবং বোতামগুলিতে আপনার অ-ইংরাজী পাঠ্যের প্রয়োজনের মুহূর্তে আপনাকে জেএস সংশোধন করতে হবে বা বুটস্ট্র্যাপ এইচটিএমএল এবং জেএস নিজেই যুক্ত করার মতো প্রায় প্যারামিটারাইজিং শুরু করতে হবে। :)
Johncl

31
  // ---------------------------------------------------------- Generic Confirm  

  function confirm(heading, question, cancelButtonTxt, okButtonTxt, callback) {

    var confirmModal = 
      $('<div class="modal hide fade">' +    
          '<div class="modal-header">' +
            '<a class="close" data-dismiss="modal" >&times;</a>' +
            '<h3>' + heading +'</h3>' +
          '</div>' +

          '<div class="modal-body">' +
            '<p>' + question + '</p>' +
          '</div>' +

          '<div class="modal-footer">' +
            '<a href="#" class="btn" data-dismiss="modal">' + 
              cancelButtonTxt + 
            '</a>' +
            '<a href="#" id="okButton" class="btn btn-primary">' + 
              okButtonTxt + 
            '</a>' +
          '</div>' +
        '</div>');

    confirmModal.find('#okButton').click(function(event) {
      callback();
      confirmModal.modal('hide');
    });

    confirmModal.modal('show');     
  };

  // ---------------------------------------------------------- Confirm Put To Use

  $("i#deleteTransaction").live("click", function(event) {
    // get txn id from current table row
    var id = $(this).data('id');

    var heading = 'Confirm Transaction Delete';
    var question = 'Please confirm that you wish to delete transaction ' + id + '.';
    var cancelButtonTxt = 'Cancel';
    var okButtonTxt = 'Confirm';

    var callback = function() {
      alert('delete confirmed ' + id);
    };

    confirm(heading, question, cancelButtonTxt, okButtonTxt, callback);

  });

1
এটি একটি পুরানো পোস্ট তবে আমি একই জিনিসটি করতে চাই তবে যখন আমি উপরের কোডটি ব্যবহার করব তখন মোডাল ডায়ালগটি দোসট শো?
সৌরভ

28

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

http://www.petefreitag.com/item/809.cfm

প্রথমে jquery লোড করুন

$(document).ready(function() {
    $('a[data-confirm]').click(function(ev) {
        var href = $(this).attr('href');

        if (!$('#dataConfirmModal').length) {
            $('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>');
        } 
        $('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm'));
        $('#dataConfirmOK').attr('href', href);
        $('#dataConfirmModal').modal({show:true});
        return false;
    });
});

তারপরে হ্রেফকে কেবল কোনও প্রশ্ন / নিশ্চিতকরণ জিজ্ঞাসা করুন:

<a href="/any/url/delete.php?ref=ID" data-confirm="Are you sure you want to delete?">Delete</a>

এইভাবে কনফার্মেশন মডেলটি অনেক বেশি সর্বজনীন এবং তাই এটি আপনার ওয়েবসাইটের অন্যান্য অংশে সহজেই ব্যবহার করা যেতে পারে।


4
অনুগ্রহ করে অন্য উত্স থেকে কোড পোস্ট করবেন না: petefreitag.com/item/809.cfm
উ। ওয়েব

4
যদিও অপ্ট প্রথমে এট্রিবিউটটি ভুলে গিয়েছিল, এটি আমার জন্য উপযুক্ত জিনিস। একটি যাদুমন্ত্র মত কাজ করে.
জ্যানিস পিসেনিকস

3
আমি মনে করি কোনও জিইটি
এইচপি

7
মা আমাকে কোনও শীতল ফিউশন লিঙ্কে ক্লিক না করতে বলেছিলেন
মাইক পারসেল

3
@BenY এটি ব্যবহারকারী কিছু বা না করার অনুমতি রয়েছে কিনা সম্পর্কে না, এটি দূষিত ইতিমধ্যে যে ব্যবহারকারী সম্বন্ধে অনুমতি আছে কিছু অন্য সাইটে লিঙ্ক ক্লিক প্রতারিত হচ্ছে না, ইমেইল ইত্যাদি দূষিত ব্যবহারকারীর ব্যবহারকারীরা অনুমতি সদ্ব্যবহার করতে পারেন।
ব্রেট

17

@ জোসবির সমাধানের জন্য ধন্যবাদ , আমি আমার কাজটিও ঠিকঠাকভাবে পরিচালিত করতে পেরেছি, তবে পাওয়া গেছে যে সরকারী উদাহরণগুলিতে প্রদর্শিত হিসাবে সঠিকভাবে রেন্ডার করার জন্য আমাকে তার সমাধানের বুটস্ট্র্যাপ মডেল মার্কআপটিকে কিছুটা উন্নত করতে হয়েছিল ।

সুতরাং, এখানে আমার জেনেরিক confirmফাংশনের পরিবর্তিত সংস্করণ যা ভাল কাজ করেছে:

/* Generic Confirm func */
  function confirm(heading, question, cancelButtonTxt, okButtonTxt, callback) {

    var confirmModal = 
      $('<div class="modal fade">' +        
          '<div class="modal-dialog">' +
          '<div class="modal-content">' +
          '<div class="modal-header">' +
            '<a class="close" data-dismiss="modal" >&times;</a>' +
            '<h3>' + heading +'</h3>' +
          '</div>' +

          '<div class="modal-body">' +
            '<p>' + question + '</p>' +
          '</div>' +

          '<div class="modal-footer">' +
            '<a href="#!" class="btn" data-dismiss="modal">' + 
              cancelButtonTxt + 
            '</a>' +
            '<a href="#!" id="okButton" class="btn btn-primary">' + 
              okButtonTxt + 
            '</a>' +
          '</div>' +
          '</div>' +
          '</div>' +
        '</div>');

    confirmModal.find('#okButton').click(function(event) {
      callback();
      confirmModal.modal('hide');
    }); 

    confirmModal.modal('show');    
  };  
/* END Generic Confirm func */

3
এখানে দুর্দান্ত সমাধান। বাতিল লিঙ্কটির জন্য একটি কলব্যাক পরিচালনা করতে আমি কিছুটা সামান্য পরিবর্তন করেছি। একটি ছোট সুপারিশ ব্যবহার #! পৃষ্ঠার শীর্ষে স্ক্রোলিং থেকে আটকাতে আপনার href এ # এর পরিবর্তে।
ডোমেনিক ডি

আমি যদি দ্বিগুণ-ভোট দিতে পারি তবে আমি এটি করতাম। সুন্দর এবং মার্জিত। ধন্যবাদ.
নাইজেল জনসন

খুব সুন্দর সমাধান। আরও একটি উন্নতি যা আমি প্রস্তাব করতে পারি তা হল আরেকটি যুক্তি যুক্ত করা: btnType = "btn-primary"এবং তারপরে ঠিক আছে বোতামটি ধারণ করার জন্য কোডটি পরিবর্তন করুন class="btn ' + btnType + '"btn-dangerকোনও মুছে ফেলার মতো, ঠিক আছে বোতামটির চেহারা পরিবর্তন করার জন্য oneচ্ছিক যুক্তিটি পাস করতে পারে ।
IamNaN

ধন্যবাদ. সঠিকভাবে রেন্ডার করতে আমাকে <h3> এবং <a> ট্যাগ (এইচ 3 প্রথমে) চারপাশে অদলবদল করতে হয়েছিল।
ডেভ ডকিন্স

10

আমি এই দরকারী এবং ব্যবহারে সহজ, এবং এটি দেখতে সুন্দর দেখাচ্ছে: http://maxailloud.github.io/confirm-bootstrap/

এটি ব্যবহার করতে, আপনার পৃষ্ঠায় .js ফাইল অন্তর্ভুক্ত করুন এবং তারপরে চালান:

$('your-link-selector').confirmModal();

মুছে ফেলার বিষয়টি নিশ্চিত করার জন্য এটি করার সময় এটি আরও ভাল দেখানোর জন্য আপনি এটি প্রয়োগ করতে পারেন এমন বিভিন্ন অপশন রয়েছে, যা আমি ব্যবহার করি:

$('your-link-selector').confirmModal({
    confirmTitle: 'Please confirm',
    confirmMessage: 'Are you sure you want to delete this?',
    confirmStyle: 'danger',
    confirmOk: '<i class="icon-trash icon-white"></i> Delete',
    confirmCallback: function (target) {
         //perform the deletion here, or leave this option
         //out to just follow link..
    }
});

এটি একটি দুর্দান্ত কাজ
loretoparisi

4

আমি সহজেই বুটবক্স.জেএস লাইব্রেরি ব্যবহার করে এই ধরণের কাজটি পরিচালনা করতে পারি। প্রথমে আপনাকে বুটবক্স জেএস ফাইল অন্তর্ভুক্ত করতে হবে। তারপরে আপনার ইভেন্ট হ্যান্ডলার ফাংশনে কেবল নিম্নলিখিত কোডটি লিখুন:

    bootbox.confirm("Are you sure to want to delete , function(result) {

    //here result will be true
    // delete process code goes here

    });

অফিশিয়াল বুটবক্স সাইটগুলি


2

নিম্নলিখিত সমাধানটি bootbox.js এর চেয়ে ভাল , কারণ

  • এটি বুটবক্স.জেগুলি যা করতে পারে তা করতে পারে;
  • ব্যবহার সিনট্যাক্স সহজ
  • এটি আপনাকে "ত্রুটি", "সতর্কতা" বা "তথ্য" ব্যবহার করে আপনার বার্তার রঙ মার্জিতভাবে নিয়ন্ত্রণ করতে দেয়
  • বুটবক্সটি 986 লাইন দীর্ঘ, খনিটি কেবল 110 লম্বা

digimango.messagebox.js :

const dialogTemplate = '\
    <div class ="modal" id="digimango_messageBox" role="dialog">\
        <div class ="modal-dialog">\
            <div class ="modal-content">\
                <div class ="modal-body">\
                    <p class ="text-success" id="digimango_messageBoxMessage">Some text in the modal.</p>\
                    <p><textarea id="digimango_messageBoxTextArea" cols="70" rows="5"></textarea></p>\
                </div>\
                <div class ="modal-footer">\
                    <button type="button" class ="btn btn-primary" id="digimango_messageBoxOkButton">OK</button>\
                    <button type="button" class ="btn btn-default" data-dismiss="modal" id="digimango_messageBoxCancelButton">Cancel</button>\
                </div>\
            </div>\
        </div>\
    </div>';


// See the comment inside function digimango_onOkClick(event) {
var digimango_numOfDialogsOpened = 0;


function messageBox(msg, significance, options, actionConfirmedCallback) {
    if ($('#digimango_MessageBoxContainer').length == 0) {
        var iDiv = document.createElement('div');
        iDiv.id = 'digimango_MessageBoxContainer';
        document.getElementsByTagName('body')[0].appendChild(iDiv);
        $("#digimango_MessageBoxContainer").html(dialogTemplate);
    }

    var okButtonName, cancelButtonName, showTextBox, textBoxDefaultText;

    if (options == null) {
        okButtonName = 'OK';
        cancelButtonName = null;
        showTextBox = null;
        textBoxDefaultText = null;
    } else {
        okButtonName = options.okButtonName;
        cancelButtonName = options.cancelButtonName;
        showTextBox = options.showTextBox;
        textBoxDefaultText = options.textBoxDefaultText;
    }

    if (showTextBox == true) {
        if (textBoxDefaultText == null)
            $('#digimango_messageBoxTextArea').val('');
        else
            $('#digimango_messageBoxTextArea').val(textBoxDefaultText);

        $('#digimango_messageBoxTextArea').show();
    }
    else
        $('#digimango_messageBoxTextArea').hide();

    if (okButtonName != null)
        $('#digimango_messageBoxOkButton').html(okButtonName);
    else
        $('#digimango_messageBoxOkButton').html('OK');

    if (cancelButtonName == null)
        $('#digimango_messageBoxCancelButton').hide();
    else {
        $('#digimango_messageBoxCancelButton').show();
        $('#digimango_messageBoxCancelButton').html(cancelButtonName);
    }

    $('#digimango_messageBoxOkButton').unbind('click');
    $('#digimango_messageBoxOkButton').on('click', { callback: actionConfirmedCallback }, digimango_onOkClick);

    $('#digimango_messageBoxCancelButton').unbind('click');
    $('#digimango_messageBoxCancelButton').on('click', digimango_onCancelClick);

    var content = $("#digimango_messageBoxMessage");

    if (significance == 'error')
        content.attr('class', 'text-danger');
    else if (significance == 'warning')
        content.attr('class', 'text-warning');
    else
        content.attr('class', 'text-success');

    content.html(msg);

    if (digimango_numOfDialogsOpened == 0)
        $("#digimango_messageBox").modal();

    digimango_numOfDialogsOpened++;
}

function digimango_onOkClick(event) {
    // JavaScript's nature is unblocking. So the function call in the following line will not block,
    // thus the last line of this function, which is to hide the dialog, is executed before user
    // clicks the "OK" button on the second dialog shown in the callback. Therefore we need to count
    // how many dialogs is currently showing. If we know there is still a dialog being shown, we do
    // not execute the last line in this function.
    if (typeof (event.data.callback) != 'undefined')
        event.data.callback($('#digimango_messageBoxTextArea').val());

    digimango_numOfDialogsOpened--;

    if (digimango_numOfDialogsOpened == 0)
        $('#digimango_messageBox').modal('hide');
}

function digimango_onCancelClick() {
    digimango_numOfDialogsOpened--;

    if (digimango_numOfDialogsOpened == 0)
        $('#digimango_messageBox').modal('hide');
}

Digimango.messagebox.js ব্যবহার করতে :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>A useful generic message box</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

    <link rel="stylesheet" type="text/css" href="~/Content/bootstrap.min.css" media="screen" />
    <script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script src="~/Scripts/bootstrap.js" type="text/javascript"></script>
    <script src="~/Scripts/bootbox.js" type="text/javascript"></script>

    <script src="~/Scripts/digimango.messagebox.js" type="text/javascript"></script>


    <script type="text/javascript">
        function testAlert() {
            messageBox('Something went wrong!', 'error');
        }

        function testAlertWithCallback() {
            messageBox('Something went wrong!', 'error', null, function () {
                messageBox('OK clicked.');
            });
        }

        function testConfirm() {
            messageBox('Do you want to proceed?', 'warning', { okButtonName: 'Yes', cancelButtonName: 'No' }, function () {
                messageBox('Are you sure you want to proceed?', 'warning', { okButtonName: 'Yes', cancelButtonName: 'No' });
            });
        }

        function testPrompt() {
            messageBox('How do you feel now?', 'normal', { showTextBox: true }, function (userInput) {
                messageBox('User entered "' + userInput + '".');
            });
        }

        function testPromptWithDefault() {
            messageBox('How do you feel now?', 'normal', { showTextBox: true, textBoxDefaultText: 'I am good!' }, function (userInput) {
                messageBox('User entered "' + userInput + '".');
            });
        }

    </script>
</head>

<body>
    <a href="#" onclick="testAlert();">Test alert</a> <br/>
    <a href="#" onclick="testAlertWithCallback();">Test alert with callback</a> <br />
    <a href="#" onclick="testConfirm();">Test confirm</a> <br/>
    <a href="#" onclick="testPrompt();">Test prompt</a><br />
    <a href="#" onclick="testPromptWithDefault();">Test prompt with default text</a> <br />
</body>

</html>
এখানে চিত্র বর্ণনা লিখুন


1

আপনি কলব্যাক ফাংশন দিয়ে আমার পুনরায় পুনরায় ব্যবহারযোগ্য সমাধানের চেষ্টা করতে পারেন । এই ফাংশনে আপনি পোষ্ট অনুরোধ বা কিছু যুক্তি ব্যবহার করতে পারেন। ব্যবহৃত লাইব্রেরি: জিকিউরি 3> এবং বুটস্ট্র্যাপ 3>

https://jsfiddle.net/axnikitenko/gazbyv8v/

পরীক্ষার জন্য এইচটিএমএল কোড:

...
<body>
    <a href='#' id="remove-btn-a-id" class="btn btn-default">Test Remove Action</a>
</body>
...

javascript:

$(function () {
    function remove() {
        alert('Remove Action Start!');
    }
    // Example of initializing component data
    this.cmpModalRemove = new ModalConfirmationComponent('remove-data', remove,
        'remove-btn-a-id', {
            txtModalHeader: 'Header Text For Remove', txtModalBody: 'Body For Text Remove',
            txtBtnConfirm: 'Confirm', txtBtnCancel: 'Cancel'
        });
    this.cmpModalRemove.initialize();
});

//----------------------------------------------------------------------------------------------------------------------
// COMPONENT SCRIPT
//----------------------------------------------------------------------------------------------------------------------
/**
 * Script processing data for confirmation dialog.
 * Used libraries: JQuery 3> and Bootstrap 3>.
 *
 * @param name unique component name at page scope
 * @param callback function which processing confirm click
 * @param actionBtnId button for open modal dialog
 * @param text localization data, structure:
 *              > txtModalHeader - text at header of modal dialog
 *              > txtModalBody - text at body of modal dialog
 *              > txtBtnConfirm - text at button for confirm action
 *              > txtBtnCancel - text at button for cancel action
 *
 * @constructor
 * @author Aleksey Nikitenko
 */
function ModalConfirmationComponent(name, callback, actionBtnId, text) {
    this.name = name;
    this.callback = callback;
    // Text data
    this.txtModalHeader =   text.txtModalHeader;
    this.txtModalBody =     text.txtModalBody;
    this.txtBtnConfirm =    text.txtBtnConfirm;
    this.txtBtnCancel =     text.txtBtnCancel;
    // Elements
    this.elmActionBtn = $('#' + actionBtnId);
    this.elmModalDiv = undefined;
    this.elmConfirmBtn = undefined;
}

/**
 * Initialize needed data for current component object.
 * Generate html code and assign actions for needed UI
 * elements.
 */
ModalConfirmationComponent.prototype.initialize = function () {
    // Generate modal html and assign with action button
    $('body').append(this.getHtmlModal());
    this.elmActionBtn.attr('data-toggle', 'modal');
    this.elmActionBtn.attr('data-target', '#'+this.getModalDivId());
    // Initialize needed elements
    this.elmModalDiv =  $('#'+this.getModalDivId());
    this.elmConfirmBtn = $('#'+this.getConfirmBtnId());
    // Assign click function for confirm button
    var object = this;
    this.elmConfirmBtn.click(function() {
        object.elmModalDiv.modal('toggle'); // hide modal
        object.callback(); // run callback function
    });
};

//----------------------------------------------------------------------------------------------------------------------
// HTML GENERATORS
//----------------------------------------------------------------------------------------------------------------------
/**
 * Methods needed for get html code of modal div.
 *
 * @returns {string} html code
 */
ModalConfirmationComponent.prototype.getHtmlModal = function () {
    var result = '<div class="modal fade" id="' + this.getModalDivId() + '"';
    result +=' tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">';
    result += '<div class="modal-dialog"><div class="modal-content"><div class="modal-header">';
    result += this.txtModalHeader + '</div><div class="modal-body">' + this.txtModalBody + '</div>';
    result += '<div class="modal-footer">';
    result += '<button type="button" class="btn btn-default" data-dismiss="modal">';
    result += this.txtBtnCancel + '</button>';
    result += '<button id="'+this.getConfirmBtnId()+'" type="button" class="btn btn-danger">';
    result += this.txtBtnConfirm + '</button>';
    return result+'</div></div></div></div>';
};

//----------------------------------------------------------------------------------------------------------------------
// UTILITY
//----------------------------------------------------------------------------------------------------------------------
/**
 * Get id element with name prefix for this component.
 *
 * @returns {string} element id
 */
ModalConfirmationComponent.prototype.getModalDivId = function () {
    return this.name + '-modal-id';
};

/**
 * Get id element with name prefix for this component.
 *
 * @returns {string} element id
 */
ModalConfirmationComponent.prototype.getConfirmBtnId = function () {
    return this.name + '-confirm-btn-id';
};

0

এটি প্রাসঙ্গিকভাবে বড় প্রকল্পে এলে আমাদের পুনরায় ব্যবহারযোগ্য কিছু দরকার হতে পারে । এটি এমন একটি বিষয় যা আমি এসও এর সহায়তায় নিয়ে এসেছি।

confirmDelete.jsp

<!-- Modal Dialog -->
<div class="modal fade" id="confirmDelete" role="dialog" aria-labelledby="confirmDeleteLabel"
 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">&times;</button>
            <h4 class="modal-title">Delete Parmanently</h4>
        </div>
        <div class="modal-body" style="height: 75px">
            <p>Are you sure about this ?</p>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
            <button type="button" class="btn btn-danger" id="confirm-delete-ok">Ok
            </button>
        </div>
    </div>
</div>

<script type="text/javascript">

    var url_for_deletion = "#";
    var success_redirect = window.location.href;

$('#confirmDelete').on('show.bs.modal', function (e) {
    var message = $(e.relatedTarget).attr('data-message');
    $(this).find('.modal-body p').text(message);
    var title = $(e.relatedTarget).attr('data-title');
    $(this).find('.modal-title').text(title);

    if (typeof  $(e.relatedTarget).attr('data-url') != 'undefined') {
        url_for_deletion = $(e.relatedTarget).attr('data-url');
    }
    if (typeof  $(e.relatedTarget).attr('data-success-url') != 'undefined') {
        success_redirect = $(e.relatedTarget).attr('data-success-url');
    }

});

<!-- Form confirm (yes/ok) handler, submits form -->
$('#confirmDelete').find('.modal-footer #confirm-delete-ok').on('click', function () {
    $.ajax({
        method: "delete",
        url: url_for_deletion,
    }).success(function (data) {
        window.location.href = success_redirect;
    }).fail(function (error) {
        console.log(error);
    });
    $('#confirmDelete').modal('hide');
    return false;
});
<script/>

reusingPage.jsp

<a href="#" class="table-link danger"
data-toggle="modal"
data-target="#confirmDelete"
data-title="Delete Something"
data-message="Are you sure you want to inactivate this something?"
data-url="client/32"
id="delete-client-32">
</a>
<!-- jQuery should come before this -->
<%@ include file="../some/path/confirmDelete.jsp" %>

দ্রষ্টব্য: এটি অনুরোধ মোছার জন্য http মুছে ফেলা পদ্ধতিটি ব্যবহার করে, আপনি এটি জাভাস্ক্রিপ্ট থেকে পরিবর্তন করতে পারেন বা কোনও অনুরোধ সমর্থন করার জন্য ডেটা-শিরোনাম বা ডেটা-ইউআরএল ইত্যাদির মতো কোনও ডেটা-অ্যাট্রিবিউট ব্যবহার করে এটি প্রেরণ করতে পারেন।


0

আপনি যদি এটি সহজতম শর্টকাটে করতে চান তবে আপনি এই প্লাগইনটি দিয়ে এটি করতে পারেন ।


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


ধারণা

আমি এটিকে নিজের দ্বারা এটি প্রয়োগ করতে পছন্দ করি-

  1. ব্যবহারকারী যদি তালিকা থেকে কোনও আইটেম মুছতে বোতামে ক্লিক করেন, তবে কোনও জেএস কল মডেলের কোনও ফর্মটিতে আইটেম আইডি (বা আরও কোনও প্রয়োজনীয় ডেটা) রাখবে।
  2. তারপরে পপ-আপে, নিশ্চিতকরণের জন্য 2 টি বোতাম থাকবে।

    • হ্যাঁ ফর্মটি জমা দিন (এজ্যাক্স বা সরাসরি ফর্ম জমা সহ)
    • কোনটি কেবল মডেলকে খারিজ করবে না

কোডটি এর মতো হবে ( বুটস্ট্র্যাপ ব্যবহার করে ) -

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<script>
$(document).ready(function()
{
    $("button").click(function()
    {
        //Say - $('p').get(0).id - this delete item id
        $("#delete_item_id").val( $('p').get(0).id );
        $('#delete_confirmation_modal').modal('show');
    });
});
</script>

<p id="1">This is a item to delete.</p>

<button type="button" class="btn btn-danger">Delete</button>

<!-- Delete Modal content-->

<div class="modal fade" id="delete_confirmation_modal" role="dialog" style="display: none;">
	<div class="modal-dialog" style="margin-top: 260.5px;">
				<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal">×</button>
				<h4 class="modal-title">Do you really want to delete this Category?</h4>
			</div>
			<form role="form" method="post" action="category_delete" id="delete_data">
				<input type="hidden" id="delete_item_id" name="id" value="12">
				<div class="modal-footer">
					<button type="submit" class="btn btn-danger">Yes</button>
					<button type="button" class="btn btn-primary" data-dismiss="modal">No</button>
				</div>
			</form>
		</div>

	</div>
</div>

আপনার প্রয়োজন অনুযায়ী ফর্ম ক্রিয়াটি পরিবর্তন করা উচিত।

শুভ আবরণ :)


0

পৃষ্ঠা এবং পুনরায় ব্যবহারযোগ্য ব্লেড ফাইল লক্ষ্যবস্তু নেভিগেশন সঙ্গে পোষ্ট রেসিপি

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

ব্যবহার করে Bladeআমি ফাইলটি তৈরি করেছি resources/views/includes/confirmation_modal.blade.php:

<div class="modal fade" id="confirmation-modal" tabindex="-1" role="dialog" aria-labelledby="confirmation-modal-label" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4>{{ $headerText }}</h4>
            </div>
            <div class="modal-body">
                {{ $bodyText }}
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <form action="" method="POST" style="display:inline">
                    {{ method_field($verb) }}
                    {{ csrf_field() }}
                    <input type="submit" class="btn btn-danger btn-ok" value="{{ $confirmButtonText }}" />
                </form>
            </div>
        </div>
    </div>
</div>

<script>
    $('#confirmation-modal').on('show.bs.modal', function(e) {
        href = $(e.relatedTarget).data('href');

        // change href of button to corresponding target
        $(this).find('form').attr('action', href);
    });
</script>

এখন, এটি ব্যবহার করা সোজা-এগিয়ে রয়েছে:

<a data-href="{{ route('data.destroy', ['id' => $data->id]) }}" data-toggle="modal" data-target="#confirmation-modal" class="btn btn-sm btn-danger">Remove</a>

এখানে খুব বেশি পরিবর্তন হয়নি এবং মডেলগুলি এর মতো অন্তর্ভুক্ত করা যেতে পারে:

@include('includes.confirmation_modal', ['headerText' => 'Delete Data?', 'bodyText' => 'Do you really want to delete these data? This operation is irreversible.',
'confirmButtonText' => 'Remove Data', 'verb' => 'DELETE'])

শুধু সেখানে ক্রিয়াটি রেখে, এটি ব্যবহার করে। এইভাবে, সিএসআরএফও ব্যবহার করা হয়।

আমাকে সাহায্য করেছে, সম্ভবত এটি অন্য কাউকে সাহায্য করে।

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