আমি কীভাবে jQuery UI ডেটপিকার ক্যালেন্ডারে নির্বাচিত তারিখগুলি সাফ / পুনরায় সেট করব?


85

আমি কীভাবে তারিখ-পিকার ক্যালেন্ডার মানগুলি পুনরায় সেট করব? .. সর্বনিম্ন এবং সর্বাধিক তারিখের সীমাবদ্ধতা?

সমস্যাটি হ'ল আমি যখন তারিখগুলি সাফ করি (পাঠ্যবক্স মানগুলি মুছে ফেলে), তখনও পূর্ববর্তী তারিখের সীমাবদ্ধতাগুলি প্রয়োগ করা হয়।

আমি ডকুমেন্টেশনের মাধ্যমে বাছাই করছি এবং সমাধান হিসাবে কিছুই লাফিয়ে উঠেনি। আমি এসও / গুগল অনুসন্ধানে একটি দ্রুত সমাধান খুঁজে পাচ্ছিলাম না

http://jsfiddle.net/CoryDanielson/tF5MH/


সমাধান:

// from & to input textboxes with datepicker enabled
var dates = $("input[id$='dpFrom'], input[id$='dpTo']");

// #clearDates is a button to clear the datepickers
$('#clearDates').on('click', function(){
    dates.attr('value', '');
    dates.each(function(){
        $.datepicker._clearDate(this);
    });
});​​

_.clearDate () ডেটপিকারের অবজেক্টের একটি ব্যক্তিগত পদ্ধতি। আপনি jQuery UI এর ওয়েবসাইটে পাবলিক এপিআইতে এটি পাবেন না, তবে এটি একটি কবজির মতো কাজ করে।

উত্তর:


86

আমি এটি খুব কার্যকর করার চেষ্টা করছিলাম, অর্থাৎ ডেটপিকারটি খালি করুন যাতে ব্যবহারকারীর দ্বারা প্রবেশ করা ফিল্টারগুলি সরানো যায়। কিছুটা গুগল করে আমি পেয়েছি কোডের এই মিষ্টি টুকরা:

আপনি কেবল পঠন ক্ষেত্রগুলিতেও পরিষ্কার বৈশিষ্ট্য যুক্ত করতে পারেন। আপনার ডেটপিকারে কেবল নিম্নলিখিত কোডটি যুক্ত করুন:

}).keyup(function(e) {
    if(e.keyCode == 8 || e.keyCode == 46) {
        $.datepicker._clearDate(this);
    }
});

লোকেরা হাইলাইট করতে সক্ষম হবে (এমনকি কেবল পঠনযোগ্য ক্ষেত্রগুলি) এবং তারপরে _clearDateফাংশন ব্যবহার করে তারিখটি সরাতে ব্যাক স্পেস বা কী মুছুন key

উৎস


9
কি দারুন. তা কেন প্রচার হবে না ?! এটি jQuery UI- র এপিআই থেকেও বাদ দেওয়া হয়েছে .... এতে কোনও মানে নেই। ---- আমি আপনার পোস্টটি সম্পাদনা করেছি যাতে সমাধানটি আমার প্রশ্নের সাথে আরও ভাল মেলে। খুব সুন্দর সন্ধান
কোরি ড্যানিয়েলসন

আমার সম্পাদনাটি স্বীকার করুন, আমি অসম্পূর্ণ কোডের অনুলিপি / পেস্ট ডাম্পের পরিবর্তে আমার প্রশ্নের সাথে মেলে আপনার উত্তরটি টিকেট করেছি
কোরি ড্যানিয়েলসন

আপনার সম্পাদনা কি ইতিমধ্যে সক্রিয় নয়? আপনার সম্পাদনাটি গ্রহণ করার জন্য আমি কোনও বিকল্প দেখতে পাচ্ছি না ... :)
লেনিয়েল ম্যাকাফেরি

4
নাহ, ঠিক আছে। আমি মনে করি যে সমাধানটি আমার মূল পোস্টে অন্তর্ভুক্ত এবং আপনার উভয়ই এই পৃষ্ঠায় যাওয়ার পথ খুঁজে পাওয়া প্রায় যে কোনও ব্যক্তিকে সহায়তা করবে। কী কোড 8 এবং 46 কী বা this_CararDates () এর ঠিক অভ্যন্তর সম্পর্কে কিছু মন্তব্য রয়েছে
কোরি ড্যানিয়েলসন

4
তুমি ঠিক কোথায় রেখেছ?
w0051977

63

তুমি কি চেষ্টা করেছিলে:

$('selector').datepicker('setDate', null);

এপিআই ডকুমেন্টেশন অনুযায়ী কাজ করা উচিত


আমার কিছু তারিখ-পিকার ইনপুট সহ একটি ফর্ম রয়েছে যা আমি বর্তমান তারিখ অনুসারে পূরণ করতে চাই এমন কিছু তারিখ সম্পাদনা করতে ব্যবহার করি। বর্তমান তারিখের সাথে "সেটডেট" ব্যবহার করার আগে আমার সম্পাদনা ফর্মটি পুনরায় সেট করার জন্য আমি এই সমাধানটি খুঁজে পেয়েছি তবে আমার একটি ফর্ম্যাট সমস্যা রয়েছে: ('setDate', null)আমার পছন্দ হওয়া বিন্যাসটি ছাড়াই (ডিডি / এমএম / ওয়াইওয়াইওয়াই) আছে তবে আমি এটি ব্যবহার করার সময় এমএম করেছি / ডিডি / ওয়াইওয়াই ... শুধুমাত্র পার্থক্যটি ব্যবহারের ('setDate', null), কোনও ধারণা কেন?
মিকৈল লেজার

দুঃখিত মিকায়েল - আমি সে সম্পর্কে জানি না। আপনি কি স্ট্যাকওভারফ্লো . com / প্রশ্নস / ১৩২৮০২২ / অনুসারে তারিখটি বাতিল করার পরে ফর্ম্যাটটি পুনরায় সেট করার চেষ্টা করেছেন ?
ডেভিডউইনরাইট

22

আপনার কেবল অপশনগুলি বাতিল করতে আবার সেট করতে হবে:

dates.datepicker( "option" , {
    minDate: null,
    maxDate: null} );

আমি আপনার jsfiddle পরিবর্তন করেছি: http://jsfiddle.net/tF5MH/9/


হ্যাঁ, ধন্যবাদ আপনি সঠিক। এটি মজার, এই সমস্যাটি এমনকি jQuery UI তারিখপিকার ডেমো পৃষ্ঠায় বিদ্যমান। jqueryui.com/demos/datepicker/#date-range তারিখটি সেট করুন, তারপরে পাঠ্যবক্সটি খালি করুন এবং সমস্যাটি উপস্থিত রয়েছে
Cory ড্যানিয়েলসন

4
এটি অবশ্যই সবচেয়ে পরিষ্কার উপায়। date.datepicker( "option" , {setDate: null, minDate: null, maxDate: null} );
AL3X


10

ক্লিয়ারিং কোডটি এতে পরিবর্তন করার চেষ্টা করুন:

$('#clearDates').on('click', function(){
    dates.attr('value', '');
    $("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "maxDate", null );
    $("input[id$='dpFrom'], input[id$='dpTo']").datepicker( "option", "minDate", null );
});

8

এটি ব্যবহার করে দেখুন, এটি জ্যাকারি ক্যালেন্ডারে পরিষ্কার বোতাম যুক্ত করবে যা তারিখ সাফ করবে।

$("#DateField").datepicker({
    showButtonPanel: true,
    closeText: 'Clear',
         onClose: function (dateText, inst) {
        if ($(window.event.srcElement).hasClass('ui-datepicker-close'))
        {
            document.getElementById(this.id).value = '';
        }
    }
});

4
এই উত্তরটি ফায়ারফক্সে কাজ না করা সত্ত্বেও সম্ভবত অন্যদের চেয়ে ভাল। এবং এর সাথে প্রতিস্থাপন document.getElementById(this.id).value = '';করা $(this).val('').change();এটিকে আরও উন্নত করে কারণ এরপরে যে কোনও প্রতিষ্ঠিত পরিবর্তন হ্যান্ডলাররাও ডেকে আনে।
রায়ান 0

3

আপনি সাফ ক্লিক করার পরে আপনার ডেটপিকারে সর্বাধিক তারিখের বৈশিষ্ট্যগুলি পুনরায় সেট করুন।

Jquery ওয়েবসাইট থেকে

Get or set the maxDate option, after init.

    //getter
    var maxDate = $( ".selector" ).datepicker( "option", "maxDate" );
    //setter
    $( ".selector" ).datepicker( "option", "maxDate", '+1m +1w' );

হ্যাঁ, আপনি ঠিক বলেছেন। আমি j08691 এর সেরা উত্তর হিসাবে চিহ্নিত করেছি কারণ তিনি আমাকে এমন কিছু কোড দিয়েছেন যা আমি কাজ করতে যাওয়া ফিডলটিতে চড় মারতে পারি। দুর্ভাগ্যক্রমে আমি তাদের উভয়কেই সেরা হিসাবে চিহ্নিত করতে পারি নি: /
কোরি ড্যানিয়েলসন

হ্যাঁ আমি জানি, আমি আপনার সমস্যার সাথে সম্পর্কিত কিছু কোডের সাথে এটি আরও ভালভাবে ব্যাখ্যা করতে যাচ্ছিলাম তবে তিনি আমাকে এতে মারধর করেছিলেন। :)
মার্ক ডব্লু

3

আমি জানি কিছুটা দেরি হয়ে গেছে, তবে এখানে কোডের একটি সহজ শান্তি যা এটি আমার জন্য করেছিল:

$('#datepicker-input').val('').datepicker("refresh");

আমি দেখতে পাচ্ছি না যে রিফ্রেশটি কোনও অতিরিক্ত করে। আপনি কেবল মানটি সাফ করতে পারেন।
ওমরজেবাড়ী

4
আমি পছন্দ করি আপনি নিয়ন্ত্রণটি সাফ করার জন্য একটি সর্বজনীন কল বনাম প্রাইভেট ফাংশন ব্যবহার করছেন।
স্নোইটিস

4
@ মিগুয়েল বিনপার, আমি জানি এই পোস্টটি পুরানো তবে আপনার উত্তরটি একমাত্র উত্তর যা এই বিষয়টি বের করার চেষ্টা করার 3 দিন পরে আমার পক্ষে কাজ করেছিল। ধন্যবাদ!
কেজো

3

সুস্পষ্ট উত্তরটি আমার পক্ষে কাজ করেছিল।

$('#datepicker').val('');

যেখানে $ ('# ডেটপিকার') ইনপুট উপাদানটির আইডি।


আমি জেএসফিডেলে সেই সমাধানটি চেষ্টা করেছিলাম, এবং এটি কার্যকর হয়নি। jsfiddle.net/tF5MH/407 ইনপুটগুলির নিচে পুনরুত্পাদন পদক্ষেপ দেখুন। ব্যবহারের .val('')ফলে ইনপুটগুলি খালি হয়ে যাবে, তবে ক্যালেন্ডারে ডেটপিকারের সীমাবদ্ধতাগুলি পরিষ্কার করা যাবে না।
কোরি ড্যানিয়েলসন

আমি jQuery UI (v1.12.0) এর সর্বশেষতম সংস্করণ দিয়েও চেষ্টা করেছি এবং এটি কার্যকর হয়নি।
কোরি ড্যানিয়েলসন

ধন্যবাদ একটি টন ওমর। আমি গত 20 মিনিট থেকে এই কার্যনির্বাহী সমাধানটি অনুসন্ধান করছি। আপনি জীবন রক্ষাকারী মানুষ! ..
মহেশ

0

আইই 8-তে কোনও "পেজ ব্যাক" শর্টকাট হওয়ায় ব্যাকস্পেস কী হিসাবে অ্যাকাউন্টে নিবন্ধ করার জন্য লেনিয়াল ম্যাকফেরির সমাধানের একটি পরিবর্তিত সংস্করণ যখন কোনও পাঠ্য ক্ষেত্রে ফোকাস না থাকে (যা ডেটপিকারটি খোলা থাকে তখন এটি প্রদর্শিত হয়)।

এটি val()ক্ষেত্রটি সাফ করার জন্যও ব্যবহার করে যেহেতু _clearDate(this)আমার পক্ষে কাজ করে না।

$("#clearDates").datepicker().keyup(function (e) {
    // allow delete key (46) to clear the field
    if (e.keyCode == 46)
        $(this).val("");

    // backspace key (8) causes 'page back' in IE8 when text field
    // does not have focus, Bad IE!!
    if (e.keyCode == 8)
        e.stopPropagation();
});

0

আমার ডেটপিকারের সূচনাটি দেখে মনে হচ্ছে:

    dateOptions = {
                changeYear: true,
                changeMonth: true,
                dateFormat: 'dd/mm/yy',
                showButtonPanel: true,
                closeText: 'Clear',
            };

সুতরাং, ডিফল্ট 'সম্পন্ন' বোতামটির 'সাফ' পাঠ্য থাকবে।

এখন, তারিখপিকার.জেজে অভ্যন্তরীণ ফাংশনটি খুঁজে পেয়েছে '_ট্যাচহ্যান্ডার্স' দেখে মনে হচ্ছে:

 _attachHandlers: function (inst) {
            var stepMonths = this._get(inst, "stepMonths"),
                id = "#" + inst.id.replace(/\\\\/g, "\\");
            inst.dpDiv.find("[data-handler]").map(function () {
                var handler = {
                    prev: function () {...},
                    next: function () {...},
                    hide: function () {
                        $.datepicker._hideDatepicker();
                    },
                    today: function () {...}
                    ... 

এবং লুকানোর ফাংশনটি দেখতে দেখতে পরিবর্তন করুন :

                   ...
                   hide: function () {
                        $.datepicker._clearDate(id);
                        $.datepicker._hideDatepicker();
                    },
                    ...

সমাধানটি এই * ডেটা-হ্যান্ডলার = "লুকান" * থেকে এসেছে


0

আমি এই কোডটি ক্ষেত্র এবং সমস্ত শেননিগান পরিষ্কার করতে ব্যবহার করি use আমার ব্যবহারের ক্ষেত্রে খালি ক্ষেতের দরকার ছিল

jQuery.datepicker._clearDate(window.firstDay);
window.firstDay.datepicker('setDate',null);
window.firstDay[0].value = '';

কোনও কারণে .val('')আমার পক্ষে কাজ করবে না। তবে jQuery বাইপাস করে তা করেছে। আমার মতে এটি একটি ত্রুটি যে কোনও .datepicker ('পরিষ্কার') বিকল্প নেই।


0

এই সমস্যাটি সমাধান করার আমার উপায়

Ui.js এ var 'নিয়ন্ত্রণ' পরিবর্তন করুন

controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
        this._get(inst, "closeText") + "</button>" + "<button type='button' class='ui-datepicker-close ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
        this._get(inst, "clearText") + "</button>" : "");

তারপরে একটি ক্লিয়ারটেক্সট ভ্যার যুক্ত করুন

    this.regional[""] = { // Default regional settings
    closeText: "Done", // Display text for close link
    clearText: "Clear", // Display text for close link
    prevText: "Prev", // Display text for previous month link

এবং শো ফাংশন আগে

$(".i_date").datepicker
(
    {
        beforeShow: function (input, inst)
        {
            setTimeout
            (
                function () 
                { 
                    $('.ui-datepicker-clear').bind('click', function() { $(input).val(''); });
                }, 
                0
            );
        }
    }
);

0
$("#datepicker").datepicker({            
        showButtonPanel: true,
        closeText: 'Clear', 
        onClose: function () {
            var event = arguments.callee.caller.caller.arguments[0];                
            if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
                $(this).val('');
            }
        }
    });

0

ফায়ারফক্সে এটি আমার জন্য ফর্ম (প্রোগ্রাম্যাটিক) হিসাবে কাজ করে, যেখানে ডেটপিকার নিয়ন্ত্রণ ডিফল্টরূপে অক্ষম থাকে:

$("#txtDat2").prop('disabled', false); //temporary enable controls<br>
$("#txtDat2").val("YYYY-MM-DD"); //reset date to dd.mm.yyyyy
$("#txtDat2").prop('disabled', true); //back to default state

-1

দয়া করে এই সমাধানটি চেষ্টা করুন এটি চেষ্টা করার মতো এটি সঠিকভাবে কাজ করবে

$('selector').datepicker('setStartDate', 0);

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