jQuery UI তারিখপিকার শুধুমাত্র মাসের বছর দেখানোর জন্য


374

আমি আমার অ্যাপ্লিকেশনে ক্যালেন্ডারটি প্রদর্শন করতে jQuery তারিখ চয়নকারী ব্যবহার করছি using আমি জানতে চাই যে আমি এটি ক্যালেন্ডার নয়, মাস এবং বছর (মে 2010) প্রদর্শন করতে ব্যবহার করতে পারি কিনা?


16
সুতরাং আপনি একটি মাস চয়নকারী চান?
বিন্দু

আপনি কি jQueryUI তারিখপিকার ব্যবহার করছেন?
wpjmurray

হ্যাঁ. jQueryUI তারিখপিকার
Aanu

6
এটি আপনার প্রশ্নের উত্তর নয়, তবে এখন আমাদের কাছে এটি আরও ভাল দেখাচ্ছে: eternicode.github.io/bootstrap-datepicker/…
রুবেন

বুটস্ট্র্যাপ-ডেটপিকারটি বন্ধ হওয়া রেপো বলে মনে হচ্ছে, কোনও লক্ষণীয় কাজ ছাড়াই বিষয়গুলি পাইলিং করা হচ্ছে ...
কুমারহর্ষ

উত্তর:


424

এখানে একটি হ্যাক (সম্পূর্ণ। Html ফাইলের সাথে আপডেট হয়েছে):

<!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" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
    <script type="text/javascript">
        $(function() {
            $('.date-picker').datepicker( {
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat: 'MM yy',
            onClose: function(dateText, inst) { 
                $(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, 1));
            }
            });
        });
    </script>
    <style>
    .ui-datepicker-calendar {
        display: none;
    }
    </style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

উপরের উদাহরণের জন্য jsfizz সম্পাদনা করুন : http://jsfiddle.net/DBpJe/7755/

সম্পাদনা 2 কেবলমাত্র বোতামে ক্লিক করে ইনপুট বাক্সে মাসব্যাপী মান যুক্ত করে। এছাড়াও ইনপুট বাক্সের মানগুলি মুছতে দেয়, যা উপরের ক্ষেত্রটিতে সম্ভব নয় http://jsfiddle.net/DBpJe/5103/

রেকসল্ফের সমাধানটি নীচের ভিত্তিতে এডিআইটি 3 আপডেট করা বেটার সলিউশন।
http://jsfiddle.net/DBpJe/5106


14
'সেটডেট' কল করে কিছু ব্রাউজারে পিকারটি আবার খোলা হবে। এটি প্রতিরোধ করতে, চয়নকারীকে অক্ষম ও সক্ষম করে তুলেছেন: $ (এটি) .ডেটপিকার ('অক্ষম করুন'); this (এটি)। তারিখপিকার ('সেটডেট', নতুন তারিখ (বছর 1, মাস 1, 1)); $ (এই) .datepicker ( 'সক্ষম');
সোভেন সাননিচসেন

1
@ সোভেন এখানে বিকল্প:$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
থিয়ামটেক

1
আমি এই সমাধানটি ব্যবহার করার চেষ্টা করছি, তবে ডেটপিকারে গেটডেট ব্যবহার করে কেবল আজই ফিরে আসে। কি খবর?
সুপারটিপি

1
আমি দেখতে পাচ্ছি বেশিরভাগ উদাহরণ পৃষ্ঠায়ই ইনলাইন স্টাইল ব্যবহার করছে। যদি কোনওভাবে একই পৃষ্ঠায় আপনার একাধিক ক্যালেন্ডার (উদাহরণস্বরূপ, বিভিন্ন সেটিংস সহ প্রতিটি) প্রয়োজন হয় তবে এটি একটি সমস্যা হবে। আমি .ssss ফাইলগুলিতে শৈলী যুক্ত করা পছন্দ করি: #ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;} এবং তারপরে আচরণটি পরিচালনা করতে জাভাস্ক্রিপ্ট ব্যবহার করুন:$("#ui-datepicker-div").addClass('noCalendar');
পাওয়ার

1
উপরের উদাহরণে আমি যদি পাঠ্য বাক্সটি সাফ করতে চাই তবে আমি পারি না। আমাকে কি কেউ সাহায্য করতে পারবেন.
বিক

83

এই কোডটি আমার কাছে নির্দোষভাবে কাজ করছে:

<script type="text/javascript">
$(document).ready(function()
{   
    $(".monthPicker").datepicker({
        dateFormat: 'MM yy',
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,

        onClose: function(dateText, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
        }
    });

    $(".monthPicker").focus(function () {
        $(".ui-datepicker-calendar").hide();
        $("#ui-datepicker-div").position({
            my: "center top",
            at: "center bottom",
            of: $(this)
        });
    });
});
</script>

<label for="month">Month: </label>
<input type="text" id="month" name="month" class="monthPicker" />

আউটপুট হল:

এখানে চিত্র বর্ণনা লিখুন


কীভাবে এই ক্যালেন্ডারে কোনও মান সেট করতে পারে।
রফিক মেল্ক

62

@ বেন কোহলার , এটি প্রিফেক্ট! আমি একটি ছোটখাট পরিবর্তন করেছি যাতে ডেট পিকারের একক উদাহরণ ব্যবহার করা প্রত্যাশার চেয়ে একাধিকবার কাজ করে। এই পরিবর্তন ছাড়া তারিখটি ভুলভাবে বিশ্লেষণ করা হয় এবং পূর্বে নির্বাচিত তারিখটি হাইলাইট করা হয় না।

<!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" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
    <script type="text/javascript">
    $(function() {
        $('.date-picker').datepicker( {
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat: 'MM yy',
            onClose: function(dateText, inst) { 
                var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                $(this).datepicker('setDate', new Date(year, month, 1));
            },
            beforeShow : function(input, inst) {
                var datestr;
                if ((datestr = $(this).val()).length > 0) {
                    year = datestr.substring(datestr.length-4, datestr.length);
                    month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNamesShort'));
                    $(this).datepicker('option', 'defaultDate', new Date(year, month, 1));
                    $(this).datepicker('setDate', new Date(year, month, 1));
                }
            }
        });
    });
    </script>
    <style>
    .ui-datepicker-calendar {
        display: none;
        }
    </style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

এই উত্তরটি বেশিরভাগ ক্ষেত্রেই সঠিক। যাইহোক, যখন কোনও তারিখ ইতিমধ্যে নির্বাচিত হয় তখন সঠিক মাস নির্বাচন করতে আমাকে এমএম পরিবর্তন করতে হয়েছিল।
ছাজাক

18

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

এটি আমার জন্য নিখুঁত কাজ করে:

$.fn.monthYearPicker = function(options) {
    options = $.extend({
        dateFormat: "MM yy",
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        showAnim: ""
    }, options);
    function hideDaysFromCalendar() {
        var thisCalendar = $(this);
        $('.ui-datepicker-calendar').detach();
        // Also fix the click event on the Done button.
        $('.ui-datepicker-close').unbind("click").click(function() {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            thisCalendar.datepicker('setDate', new Date(year, month, 1));
        });
    }
    $(this).datepicker(options).focus(hideDaysFromCalendar);
}

তারপরে অনুরোধ করুন:

$('input.monthYearPicker').monthYearPicker();

2
শেষ পর্যন্ত আমি এটিকে নিম্নমুখী করে তুলছি কারণ এটি অকার্যকর, কারণ অন-সিলেক্ট এবং / অথবা onChangeMonthYear এবং / অথবা on ক্লোজ ইভেন্টগুলি আগুন দেয় না, বা সঠিক মানগুলি গ্রহণ করে না, বা যদি ওভাররাইড করা হয়, উইজেটটির কাজ বন্ধ করে দিন
নক করুন

10
<style>
.ui-datepicker table{
    display: none;
}

<script type="text/javascript">
$(function() {
    $( "#manad" ).datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'yy-mm',
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        },
        beforeShow : function(input, inst) {
            if ((datestr = $(this).val()).length > 0) {
                actDate = datestr.split('-');
                year = actDate[0];
                month = actDate[1]-1;
                $(this).datepicker('option', 'defaultDate', new Date(year, month));
                $(this).datepicker('setDate', new Date(year, month));
            }
        }
    });
});

এটি সমস্যার সমাধান করবে =) তবে আমি টাইমফর্ম্যাটটি চাইছিলাম ymmy-mm

যদিও কেবল এফএফ 4 এ চেষ্টা করা হয়েছে


জিকুয়েরিতে "yy" চার অঙ্কের বছর। এটি যদি আপনি চান তবে আপনি এটি অর্জন করেছেন।
পাওয়ে ডায়দা

9

আমার আজকের একই প্রয়োজন ছিল এবং এটি গিথুব এ পেয়েছি, jQueryUI এর সাথে কাজ করে এবং ক্যালেন্ডারে দিনের পরিবর্তে মাস চয়নকারী

https://github.com/thebrowser/jquery.ui.monthpicker


5
রক্ষণাবেক্ষণ করা হয়নি, তবে একটি কাঁটাচামচ রয়েছে: github.com/zorab47/jquery.ui.monthpicker
denis.peplin

8

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

এইচটিএমএল:

<input type='text' class='monthpicker'>

javascript:

$(".monthpicker").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "yy-mm",
    showButtonPanel: true,
    currentText: "This Month",
    onChangeMonthYear: function (year, month, inst) {
        $(this).val($.datepicker.formatDate('yy-mm', new Date(year, month - 1, 1)));
    },
    onClose: function(dateText, inst) {
        var month = $(".ui-datepicker-month :selected").val();
        var year = $(".ui-datepicker-year :selected").val();
        $(this).val($.datepicker.formatDate('yy-mm', new Date(year, month, 1)));
    }
}).focus(function () {
    $(".ui-datepicker-calendar").hide();
}).after(
    $("<a href='javascript: void(0);'>clear</a>").click(function() {
        $(this).prev().val('');
    })
);

5

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

সম্পূর্ণ সমাধানের জন্য এই ঝাঁকুনি দেখুন : মাস / বছর পিকার @ জেএসফিডাল

কোড:

var searchMinDate = "-2y";
var searchMaxDate = "-1m";
if ((new Date()).getDate() <= 5) {
    searchMaxDate = "-2m";
}
$("#txtFrom").datepicker({
    dateFormat: "M yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    showAnim: "",
    minDate: searchMinDate,
    maxDate: searchMaxDate,
    showButtonPanel: true,
    beforeShow: function (input, inst) {
        if ((datestr = $("#txtFrom").val()).length > 0) {
            var year = datestr.substring(datestr.length - 4, datestr.length);
            var month = jQuery.inArray(datestr.substring(0, datestr.length - 5), "#txtFrom").datepicker('option', 'monthNamesShort'));
        $("#txtFrom").datepicker('option', 'defaultDate', new Date(year, month, 1));
                $("#txtFrom").datepicker('setDate', new Date(year, month, 1));
            }
        },
        onClose: function (input, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $("#txtFrom").datepicker('option', 'defaultDate', new Date(year, month, 1));
            $("#txtFrom").datepicker('setDate', new Date(year, month, 1));
            var to = $("#txtTo").val();
            $("#txtTo").datepicker('option', 'minDate', new Date(year, month, 1));
            if (to.length > 0) {
                var toyear = to.substring(to.length - 4, to.length);
                var tomonth = jQuery.inArray(to.substring(0, to.length - 5), $("#txtTo").datepicker('option', 'monthNamesShort'));
                $("#txtTo").datepicker('option', 'defaultDate', new Date(toyear, tomonth, 1));
                $("#txtTo").datepicker('setDate', new Date(toyear, tomonth, 1));
            }
        }
    });
    $("#txtTo").datepicker({
        dateFormat: "M yy",
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        showAnim: "",
        minDate: searchMinDate,
        maxDate: searchMaxDate,
        showButtonPanel: true,
        beforeShow: function (input, inst) {
            if ((datestr = $("#txtTo").val()).length > 0) {
                var year = datestr.substring(datestr.length - 4, datestr.length);
                var month = jQuery.inArray(datestr.substring(0, datestr.length - 5), $("#txtTo").datepicker('option', 'monthNamesShort'));
                $("#txtTo").datepicker('option', 'defaultDate', new Date(year, month, 1));
                $("#txtTo").datepicker('setDate', new Date(year, month, 1));
            }
        },
        onClose: function (input, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $("#txtTo").datepicker('option', 'defaultDate', new Date(year, month, 1));
            $("#txtTo").datepicker('setDate', new Date(year, month, 1));
            var from = $("#txtFrom").val();
            $("#txtFrom").datepicker('option', 'maxDate', new Date(year, month, 1));
            if (from.length > 0) {
                var fryear = from.substring(from.length - 4, from.length);
                var frmonth = jQuery.inArray(from.substring(0, from.length - 5), $("#txtFrom").datepicker('option', 'monthNamesShort'));
                $("#txtFrom").datepicker('option', 'defaultDate', new Date(fryear, frmonth, 1));
                $("#txtFrom").datepicker('setDate', new Date(fryear, frmonth, 1));
            }

        }
    });

উপরে উল্লিখিত হিসাবে এটি স্টাইল ব্লকে যুক্ত করুন:

.ui-datepicker-calendar { display: none !important; }

5

আমি উপরের অনেক ভাল উত্তর একত্রিত এবং এ পৌঁছে:

    $('#payCardExpireDate').datepicker(
            {
                dateFormat: "mm/yy",
                changeMonth: true,
                changeYear: true,
                showButtonPanel: true,
                onClose: function(dateText, inst) { 
                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, month, 1)).trigger('change');
                },
                beforeShow : function(input, inst) {
                    if ((datestr = $(this).val()).length > 0) {
                        year = datestr.substring(datestr.length-4, datestr.length);
                        month = datestr.substring(0, 2);
                        $(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
                        $(this).datepicker('setDate', new Date(year, month-1, 1));
                    }
                }
            }).focus(function () {
                $(".ui-datepicker-calendar").hide();
                $("#ui-datepicker-div").position({
                    my: "center top",
                    at: "center bottom",
                    of: $(this)
                });
            });

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

if($.datepicker._get(inst, "dateFormat") === "mm/yy")
{
    $(".ui-datepicker-calendar").hide();
}

প্যাচ 1: ইন_শোডিটপিকার: লুকোচুরি মসৃণ করতে;

প্যাচ 2: _চেকআফসেটে: মাস পিকারের অবস্থান সংশোধন করতে (অন্যথায় ক্ষেত্রটি ব্রাউজারের নীচে থাকলে, অফসেট চেক বন্ধ থাকে);

patch3: _hideDatepicker- এর ক্লোজ ইন: অন্যথায় তারিখের ক্ষেত্রগুলি বন্ধ করার সময় খুব অল্প সময়ের জন্য ফ্ল্যাশ হবে যা খুব বিরক্তিকর।

আমি জানি আমার ফিক্সটি ভাল থেকে দূরে ছিল তবে আপাতত এটি কাজ করছে। আশা করি এটা সাহায্য করবে.


শুধু এই লাইনটি শো-এর আগে যুক্ত করুন:। Inst.dpDiv.addClass ('মাসিক_ইয়ার_ডেটপিকার')}} তারিখগুলি ঝলকানো বন্ধ হয়ে যাবে :)। এছাড়াও আমি মনে করি .focus তারপর প্রয়োজন হতে অভ্যস্ত
পরাগ

5

আরও একটি সহজ সমাধান যোগ করুন

 $(function() {
    $('.monthYearPicker').datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'M yy'
    }).focus(function() {
        var thisCalendar = $(this);
        $('.ui-datepicker-calendar').detach();
        $('.ui-datepicker-close').click(function() {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
thisCalendar.datepicker('setDate', new Date(year, month, 1));
        });
    });
});

http://jsfiddle.net/tmnasim/JLydp/
বৈশিষ্ট্য :

  • শুধুমাত্র মাস / বছর প্রদর্শন করুন
  • শুধুমাত্র হয়ে গেছে বোতামটি ক্লিক করে ইনপুট বাক্সে মাসব্যাপী মান যোগ করে
  • "সম্পন্ন" ক্লিক করার সময় "পুনরায় খুলুন" আচরণ নেই
    ------------------------------------
    আরও একটি সমাধান যা কাজ করে একই পৃষ্ঠায় ডেটপিকার এবং মাসপিকারের জন্য ভাল: (এছাড়াও আইই এর পূর্ববর্তী বোতামটিতে একাধিক ক্লিকের বাগটি এড়ানো উচিত, যদি আমরা ফোকাস ফাংশন ব্যবহার করি তবে এটি ঘটতে পারে)
    জেএস ফিডাল লিঙ্ক

4

এটি কি কেবলমাত্র আমি বা এটি আই (8) এর মতো কাজ করছে না? সম্পন্ন ক্লিক করার সময় তারিখ পরিবর্তন হয় তবে ডেটপিকারটি আবার খোলে, যতক্ষণ না আপনি ইনপুট ক্ষেত্রে ফোকাসটি আলগা করার জন্য পৃষ্ঠার কোনও জায়গায় ক্লিক না করেন ...

আমি এটি সমাধান করার জন্য সন্ধান করছি।

<!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" xml:lang="en" lang="en">
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css">
<script type="text/javascript">
$(function() {
    $('.date-picker').datepicker( {
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy',
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
    });
});
</script>
<style>
.ui-datepicker-calendar {
    display: none;
    }
</style>
</head>
<body>
    <label for="startDate">Date :</label>
    <input name="startDate" id="startDate" class="date-picker" />
</body>
</html>

1
$ (এই) .datepicker ( 'নিষ্ক্রিয়'); this (এটি)। তারিখপিকার ('সেটডেট', নতুন তারিখ (বছর, মাস, 1)); $ (এই) .datepicker ( 'সক্ষম'); সমস্যা সমাধান করে।
টম ভ্যান শুর

1
এটি কোনও উত্তর নয়
সিশার্প

4

আপনি যদি কোনও মাস বাছাইকারী খুঁজছেন তবে এই jquery.mtz.monthpicker ব্যবহার করে দেখুন

এটি আমার পক্ষে ভাল কাজ করেছে।

options = {
    pattern: 'yyyy-mm', // Default is 'mm/yyyy' and separator char is not mandatory
    selectedYear: 2010,
    startYear: 2008,
    finalYear: 2012,
    monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
};

$('#custom_widget').monthpicker(options);

লিঙ্কটি মারা গেছে। এই সাইটে পৌঁছানো যাবে না | lucianocosta.info এর সার্ভার ডিএনএস ঠিকানা খুঁজে পাওয়া যায়নি।
পাং

1
এখানে একটি আপডেট লিংক: lucianocosta.com.br/jquery.mtz.monthpicker
সেবাস্তিয়ান এস।

আপডেট হওয়া লিঙ্কটিও ভেঙে গেছে।
nasch

4

অন্য অনেকের মতো আমিও এটি করার চেষ্টা করে অনেক সমস্যার মুখোমুখি হয়েছি এবং পোস্ট হওয়া সমাধানগুলির একটি সংমিশ্রণ এবং শেষ পর্যন্ত এটিকে নিখুঁত করার জন্য একটি বড় হ্যাক আমার একটি সমাধান পেয়েছে

আমি চেষ্টা করেছি এই থ্রেডে অন্যান্য সমাধানগুলির সাথে সমস্যাগুলি:

  1. ডেটপিকারে একটি নতুন তারিখ নির্বাচন করা, অন্যান্য ডেটপিকারগুলির (অভ্যন্তরীণ) তারিখকেও পরিবর্তন করতে পারে, সুতরাং যখন আপনি আবার অন্যগুলি খুলেন (বা তাদের তারিখ পাওয়ার চেষ্টা করেছিলেন), তাদের নির্ধারিত ইনপুটটিতে প্রদর্শিত তারিখের চেয়ে আলাদা তারিখ থাকতে পারে -field।
  2. ডেটপিকারটি আবার খোলার তারিখটি "মনে রাখে না"।
  3. তারিখগুলি জাফলিংয়ের জন্য কোডটি স্ট্রস্ট্রিং ব্যবহৃত হয়েছিল তাই এটি সমস্ত ফর্ম্যাটের সাথে উপযুক্ত নয়।
  4. "আমার মাসিক পিকার" কেবলমাত্র যখনই মান পরিবর্তন করা হত তার পরিবর্তে এটি বন্ধ করার সময় ইনপুট-ফিল্ডটি পরিবর্তন করে।
  5. ইনপুট-ফিল্ডটি সঠিকভাবে আপডেট হয় না, যদি আপনি কোনও তারিখের জন্য ভুলভাবে ফর্ম্যাট করা ইনপুট-স্ট্রিং টাইপ করেন এবং তারপরে ডেটপিকারে 'বন্ধ' ক্লিক করুন।
  6. আমার কাছে সাধারণ ডেটপিকার থাকতে পারে না, যা একই পাতায় মাসপিকার হিসাবে দিনগুলি দেখায়, যা দিনগুলি দেখায় না।

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

দ্রষ্টব্য: আপনার স্বাভাবিক ডেটপিকারে প্রথম তিনটি সমস্যা সমাধানের জন্য আপনাকে নিম্নলিখিত মাসিক পিকার স্ক্রিপ্টগুলি ব্যবহার করার দরকার নেই। কেবল এই পোস্টের নীচের দিকে ডেট পিকার ইনস্ট্যান্টেশন-স্ক্রিপ্টটি ব্যবহার করুন।

এখন, মাসপিকারগুলি ব্যবহার করতে এবং শেষ সমস্যাটি সংশোধন করতে আমাদের ডেটপিকার এবং মাসিক পিকারগুলি আলাদা করতে হবে। আমরা সেখানে কয়েকটি jQuery-UI মাসপিকার অ্যাডোন পেতে পারি, তবে কিছু লোকালাইজেশন নমনীয়তা / দক্ষতার অভাব, কিছু অ্যানিমেশন সমর্থন অভাব ... তাই, কি করতে হবে? ডেটপিকার-কোড থেকে আপনার "নিজস্ব" রোল করুন! এটি কেবল দিনগুলি প্রদর্শন না করেই ডেটপিকারের সমস্ত কার্যকারিতা সহ আপনাকে একটি পুরোপুরি কার্যকরী মাসপিকারকে পেয়ে যায়।

নীচে বর্ণিত পদ্ধতিটি ব্যবহার করে আমি jQuery-UI v1.11.1 কোডটি সহ একটি মাসপিকার জেএস-স্ক্রিপ্ট এবং তার সাথে থাকা সিএসএস-স্ক্রিপ্ট সরবরাহ করেছি । এই কোড-স্নিপেটগুলি যথাক্রমে দুটি নতুন ফাইল, মাসপিকার.জে এবং মাসিক পিকার.সিএস-এ অনুলিপি করুন।

আপনি যদি তার পরিবর্তে সহজ প্রক্রিয়াটি পড়তে চান যার মাধ্যমে আমি ডেটপিকারকে একটি মাসপিকারে রূপান্তর করি তবে শেষ বিভাগে স্ক্রোল করুন।


এখন পৃষ্ঠাটিতে ডেটপিকার এবং মাসপিকার যুক্ত করতে!

এই নিম্নলিখিত জাভাস্ক্রিপ্ট কোড-স্নিপেটগুলি পূর্বোক্ত সমস্যাগুলি ছাড়াই, পৃষ্ঠাটিতে একাধিক ডেটপিকার এবং / অথবা মাসপিকারগুলির সাথে কাজ করে ! সাধারণত '$ (এটি)' ব্যবহার করে স্থির করা হয়েছে। অনেক :)

প্রথম স্ক্রিপ্টটি একটি সাধারণ ডেটপিকারের জন্য, এবং দ্বিতীয়টি "নতুন" মাসিক পিকারদের জন্য।

আউট-মন্তব্য করা। এর পরে , যা আপনাকে ইনপুট-ফিল্ড সাফ করার জন্য কিছু উপাদান তৈরি করতে দেয়, পল রিচার্ডসের উত্তর থেকে চুরি হয়ে গেছে।

আমি আমার মাসপিকারে "এমএম yy" ফর্ম্যাটটি এবং আমার ডেটপিকারে 'yy-mm-dd' ফর্ম্যাটটি ব্যবহার করছি তবে এটি সমস্ত ফর্ম্যাটের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ , তাই আপনি যে কোনওটি ব্যবহার করতে পারেন নিখরচায়। কেবল 'তারিখফর্ম্যাট' বিকল্পটি পরিবর্তন করুন। স্ট্যান্ডার্ড বিকল্পগুলি 'শো বাটনপ্যানেল', 'শোআনিম' এবং 'ইয়ার রেঞ্জ' অবশ্যই আপনার ইচ্ছা অনুযায়ী optionচ্ছিক এবং কাস্টমাইজযোগ্য।


একটি ডেটপিকার যুক্ত করা হচ্ছে

তারিখ পিকার ইনস্ট্যান্টেশন। এটি এক 90 বছর আগের এবং আজকের দিন পর্যন্ত যায়। এটি আপনাকে ইনপুট-ফিল্ডটি সঠিক রাখতে সহায়তা করে, বিশেষত আপনি যদি ডিফল্ট তারিখ, মিনিটেট এবং সর্বোচ্চ তারিখ বিকল্পগুলি সেট করেন তবে আপনি এটি না করলে এটি এটি পরিচালনা করতে পারে। এটি আপনার চয়ন করা যে কোনও ডেটফর্ম্যাটের সাথে কাজ করবে।

        $('#MyDateTextBox').datepicker({
            dateFormat: 'yy-mm-dd',
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            showMonthAfterYear: true,
            showWeek: true,
            showAnim: "drop",
            constrainInput: true,
            yearRange: "-90:",
            minDate: new Date((new Date().getFullYear() - 90), new Date().getMonth(), new Date().getDate()),
            maxDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()),
            defaultDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()),

            onClose: function (dateText, inst) {
                // When onClose is called after we have clicked a day (and not clicked 'Close' or outside the datepicker), the input-field is automatically
                // updated with a valid date-string. They will always pass, because minDate and maxDate are already enforced by the datepicker UI.
                // This try is to catch and handle the situations, where you open the datepicker, and manually type in an invalid date in the field,
                // and then close the datepicker by clicking outside the datepicker, or click 'Close', in which case no validation takes place.
                try {
                    // If datepicker can parse the date using our formatstring, the instance will automatically parse
                    // and apply it for us (after the onClose is done).
                    // If the input-string is invalid, 'parseDate' will throw an exception, and go to our catch.
                    // If the input-string is EMPTY, then 'parseDate' will NOT throw an exception, but simply return null!
                    var typedDate = $.datepicker.parseDate($(this).datepicker('option', 'dateFormat'), $(this).val());

                    // typedDate will be null if the entered string is empty. Throwing an exception will force the datepicker to
                    // reset to the last set default date.
                    // You may want to just leave the input-field empty, in which case you should replace 'throw "No date selected";' with 'return;'
                    if (typedDate == null)throw "No date selected";

                    // We do a manual check to see if the date is within minDate and maxDate, if they are defined.
                    // If all goes well, the default date is set to the new date, and datepicker will apply the date for us.
                    var minDate = $(this).datepicker("option", "minDate");
                    var maxDate = $(this).datepicker("option", "maxDate");
                    if (minDate !== null && typedDate < minDate) throw "Date is lower than minDate!";
                    if (maxDate !== null && typedDate > maxDate) throw "Date is higher than maxDate!";

                    // We update the default date, because the date seems valid.
                    // We do not need to manually update the input-field, as datepicker has already done this automatically.
                    $(this).datepicker('option', 'defaultDate', typedDate);
                }
                catch (err) {
                    console.log("onClose: " + err);
                    // Standard behavior is that datepicker does nothing to fix the value of the input field, until you choose
                    // a new valid date, by clicking on a day.
                    // Instead, we set the current date, as well as the value of the input-field, to the last selected (and
                    // accepted/validated) date from the datepicker, by getting its default date. This only works, because
                    // we manually change the default date of the datepicker whenever a new date is selected, in both 'beforeShow'
                    // and 'onClose'.
                    var date = $(this).datepicker('option', 'defaultDate');
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), date));
                    $(this).datepicker('setDate', date);
                }
            },

            beforeShow: function (input, inst) {
                // beforeShow is particularly irritating when initializing the input-field with a date-string.
                // The date-string will be parsed, and used to set the currently selected date in the datepicker.
                // BUT, if it is outside the scope of the minDate and maxDate, the text in the input-field is not
                // automatically updated, only the internal selected date, until you choose a new date (or, because
                // of our onClose function, whenever you click close or click outside the datepicker).
                // We want the input-field to always show the date that is currently chosen in our datepicker,
                // so we do some checks to see if it needs updating. This may not catch ALL cases, but these are
                // the primary ones: invalid date-format; date is too early; date is too late.
                try {
                    // If datepicker can parse the date using our formatstring, the instance will automatically parse
                    // and apply it for us (after the onClose is done).
                    // If the input-string is invalid, 'parseDate' will throw an exception, and go to our catch.
                    // If the input-string is EMPTY, then 'parseDate' will NOT throw an exception, but simply return null!
                    var typedDate = $.datepicker.parseDate($(this).datepicker('option', 'dateFormat'), $(this).val());

                    // typedDate will be null if the entered string is empty. Throwing an exception will force the datepicker to
                    // reset to the last set default date.
                    // You may want to just leave the input-field empty, in which case you should replace 'throw "No date selected";' with 'return;'
                    if (typedDate == null)throw "No date selected";

                    // We do a manual check to see if the date is within minDate and maxDate, if they are defined.
                    // If all goes well, the default date is set to the new date, and datepicker will apply the date for us.
                    var minDate = $(this).datepicker("option", "minDate");
                    var maxDate = $(this).datepicker("option", "maxDate");
                    if (minDate !== null && typedDate < minDate) throw "Date is lower than minDate!";
                    if (maxDate !== null && typedDate > maxDate) throw "Date is higher than maxDate!";

                    // We update the input-field, and the default date, because the date seems valid.
                    // We also manually update the input-field, as datepicker does not automatically do this when opened.
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), typedDate));
                    $(this).datepicker('option', 'defaultDate', typedDate);
                }
                catch (err) {
                    // Standard behavior is that datepicker does nothing to fix the value of the input field, until you choose
                    // a new valid date, by clicking on a day.
                    // We want the same behavior when opening the datepicker, so we set the current date, as well as the value
                    // of the input-field, to the last selected (and accepted/validated) date from the datepicker, by getting
                    // its default date. This only works, because we manually change the default date of the datepicker whenever
                    // a new date is selected, in both 'beforeShow' and 'onClose', AND have a default date set in the datepicker options.
                    var date = $(this).datepicker('option', 'defaultDate');
                    $(this).val($.datepicker.formatDate($(this).datepicker('option', 'dateFormat'), date));
                    $(this).datepicker('setDate', date);
                }
            }
        })
    //.after( // this makes a link labeled "clear" appear to the right of the input-field, which clears the text in it
    //    $("<a href='javascript: void(0);'>clear</a>").click(function() {
    //        $(this).prev().val('');
    //    })
    //)
    ;

একটি মাসপিকার যোগ করা হচ্ছে

আপনি যে মাসিকপিকার ব্যবহার করতে চান সেই পৃষ্ঠাতে মাসপিকার.জেএস ফাইল এবং মাসপিকার সিএসএস ফাইল অন্তর্ভুক্ত করুন।

মাসপিককার ইনস্ট্যান্টেশন এই মাসপিকের কাছ থেকে প্রাপ্ত মানটি সর্বদা নির্বাচিত মাসের প্রথম দিন the চলতি মাসে শুরু হয় এবং 100 বছর আগে এবং 10 বছর ভবিষ্যতের মধ্যে রয়েছে।

    $('#MyMonthTextBox').monthpicker({
        dateFormat: 'MM yy',
        changeMonth: true,
        changeYear: true,
        showMonthAfterYear: true,
        showAnim: "drop",
        constrainInput: true,
        yearRange: "-100Y:+10Y",
        minDate: new Date(new Date().getFullYear() - 100, new Date().getMonth(), 1),
        maxDate: new Date((new Date().getFullYear() + 10), new Date().getMonth(), 1),
        defaultDate: new Date(new Date().getFullYear(), new Date().getMonth(), 1),

        // Monthpicker functions
        onClose: function (dateText, inst) {
            var date = new Date(inst.selectedYear, inst.selectedMonth, 1);
            $(this).monthpicker('option', 'defaultDate', date);
            $(this).monthpicker('setDate', date);
        },

        beforeShow: function (input, inst) {
            if ($(this).monthpicker("getDate") !== null) {
                // Making sure that the date set is the first of the month.
                if($(this).monthpicker("getDate").getDate() !== 1){
                    var date = new Date(inst.selectedYear, inst.selectedMonth, 1);
                    $(this).monthpicker('option', 'defaultDate', date);
                    $(this).monthpicker('setDate', date);
                }
            } else {
                // If the date is null, we reset it to the defaultDate. Make sure that the defaultDate is always set to the first of the month!
                $(this).monthpicker('setDate', $(this).monthpicker('option', 'defaultDate'));
            }
        },
        // Special monthpicker function!
        onChangeMonthYear: function (year, month, inst) {
            $(this).val($.monthpicker.formatDate($(this).monthpicker('option', 'dateFormat'), new Date(year, month - 1, 1)));
        }
    })
    //.after( // this makes a link labeled "clear" appear to the right of the input-field, which clears the text in it
    //    $("<a href='javascript: void(0);'>clear</a>").click(function() {
    //        $(this).prev().val('');
    //    })
    //)
    ;

এটাই! আপনাকে কেবল মাসিক পিকার তৈরি করতে হবে।

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

আমি আশা করি এটা কারো সাহায্যে লাগবে.

কিছু অতিরিক্ত তারিখের জন্য পেস্টবিনগুলিতে লিঙ্কগুলি- এবং মাসপিকিকার সেটআপগুলি:

  1. মাসের পিকার মাসের শেষ দিনে কাজ করছেন । এই মাস পিকারের কাছ থেকে আপনি যে তারিখটি পাবেন তা সর্বদা মাসের শেষ দিন।

  2. দু'জন সহযোগী মাসপিকার ; 'স্টার্ট' মাসের প্রথম দিকে কাজ করছে, এবং 'শেষ' মাসের শেষের দিকে কাজ করছে। এগুলি উভয়ই একে অপরের দ্বারা সীমাবদ্ধ, সুতরাং 'প্রারম্ভিক' নির্বাচনের আগে নির্বাচিত মাসের আগে 'সমাপ্তি'-তে একটি মাস বেছে নেওয়া' শেষ 'হিসাবে একই মাস হিসাবে পরিবর্তিত হবে will এবং বিপরীতভাবে. বিকল্প: 'শুরু' -র দিকে কোনও মাস বাছাই করার সময় 'শেষ' -র 'মিনিট তারিখ' সেই মাসে সেট করা থাকে। এই বৈশিষ্ট্যটি সরাতে, অনক্লোজে একটি লাইন মন্তব্য করুন (মন্তব্যগুলি পড়ুন)।

  3. দু'জন সহযোগী তারিখপিকার ; এগুলি উভয়ই একে অপরের দ্বারা সীমাবদ্ধ, সুতরাং 'প্রারম্ভিক' তারিখ বেছে নেওয়া যা 'শুরু' -র নির্বাচিত তারিখের আগে, 'শুরু' পরিবর্তন করে 'শেষ' হিসাবে একই মাস হতে পারে। এবং বিপরীতভাবে. বিকল্প: 'শুরু' -র তারিখ নির্বাচন করার সময়, 'শেষ' -র 'মিনিট তারিখ' date তারিখে সেট করা থাকে। এই বৈশিষ্ট্যটি সরাতে, অনক্লোজে একটি লাইন মন্তব্য করুন (মন্তব্যগুলি পড়ুন)।


আমি কীভাবে ডেটপিকারকে মাসপিকার হিসাবে পরিণত করেছি

আমি তাদের ডেটপিকারের সাথে সম্পর্কিত jquery-ui-1.11.1.js থেকে সমস্ত জাভাস্ক্রিপ্ট কোড নিয়েছি, এটি একটি নতুন জেএস-ফাইলে পেস্ট করেছি এবং নিম্নলিখিত স্ট্রিংগুলি প্রতিস্থাপন করেছি:

  • "ডেটপিকার" ==> "মাসিক পিকার"
  • "তারিখপিকার" ==> "মাসিক পিকার"
  • "তারিখ চয়নকারী" ==> "মাস চয়নকারী"
  • "তারিখ চয়নকারী" ==> "মাস চয়নকারী"

তারপরে আমি ফর-লুপের অংশটি সরিয়ে ফেললাম যা পুরো ইউআই-ডেটপিকার-ক্যালেন্ডার ডিভ তৈরি করে (ডিভ যা অন্যান্য সমাধানগুলি সিএসএস ব্যবহার করে আড়াল করে)। এটি _ জেনারেট এইচটিএমএল: ফাংশন (ইনস্ট) -এ পাওয়া যাবে।

যে লাইনটি বলেছে তা সন্ধান করুন:

"</div><table class='ui-datepicker-calendar'><thead>" +

ডিভ-ট্যাগটি বন্ধ হওয়ার পরে এবং লাইনটিতে যেখানে লেখা আছে সেখানে (এবং অন্তর্ভুক্ত নয় ) নীচে সবকিছু চিহ্নিত করুন :

drawMonth++;

এখন এটি অসন্তুষ্ট হবে কারণ আমাদের কিছু জিনিস বন্ধ করতে হবে। আগে থেকে ডিভ-ট্যাগ বন্ধ করার পরে এটি যুক্ত করুন:

";

কোডটি এখন খুব সুন্দরভাবে একসাথে করা উচিত। এখানে একটি কোড-স্নিপেট দেখানো হচ্ছে যাতে আপনার কী শেষ করা উচিত ছিল:

...other code...

calender += "<div class='ui-monthpicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
                (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
                (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
                this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
                    row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
                "</div>";
            drawMonth++;
            if (drawMonth > 11) {
                drawMonth = 0;
                drawYear++;
            }

...other code...

তারপরে আমি ডেটপিকারের সাথে সম্পর্কিত jquery-ui.css থেকে কোডটি একটি নতুন সিএসএস-ফাইলে কপি / পেস্ট করেছি এবং নিম্নলিখিত স্ট্রিংগুলি প্রতিস্থাপন করেছি:

  • "ডেটপিকার" ==> "মাসিক পিকার"

3

ডেটপিকারের জন্য jQueryUI.com খননের পরে, এখানে আমার উপসংহার এবং আপনার প্রশ্নের উত্তর।

প্রথমত, আমি আপনার প্রশ্নের কোনও উত্তর দেব না । আপনি কেবল মাস এবং বছর বাছাইয়ের জন্য jQueryUI ডেটপিকার ব্যবহার করতে পারবেন না। এটি সমর্থিত নয়। এটির জন্য এটির কোনও কলব্যাক ফাংশন নেই।

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

আমি বলতে পারি আপনাকে অন্য একটি ডেটপিকার ব্যবহার করতে হবে। রজারের পরামর্শ মত


3

আমি মাসের পিকারের সাথে ডেট পিকারের মিশ্রণের সমস্যা ছিল। আমি এটির মতো সমাধান করেছি।

    $('.monthpicker').focus(function()
    {
    $(".ui-datepicker-calendar").show();
    }).datepicker( {
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM/yy',
        create: function (input, inst) { 

         },
        onClose: function(dateText, inst) { 
            var month = 1+parseInt($("#ui-datepicker-div .ui-datepicker-month :selected").val());           
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();

        }
    });

3

যদি কেউ এটিও একাধিক ক্যালেন্ডারের জন্য চান তবে jquery ui এ এই কার্যকারিতা যুক্ত করা খুব কঠিন নয়। জন্য minified অনুসন্ধান সহ:

x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?f:n:"")+(

এক্স এর সামনে এটি যুক্ত করুন

var accl = ''; if(this._get(a,"justMonth")) {accl = ' ui-datepicker-just_month';}

সন্ধান করা

<table class="ui-datepicker-calendar

এবং এটি দিয়ে প্রতিস্থাপন

<table class="ui-datepicker-calendar'+accl+'

এছাড়াও অনুসন্ধান

this._defaults={

এটি দিয়ে প্রতিস্থাপন

this._defaults={justMonth:false,

সিএসএসের জন্য আপনার ব্যবহার করা উচিত:

.ui-datepicker table.ui-datepicker-just_month{
    display: none;
}

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

$('#txt_month_chart_view').datepicker({
    changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy',
        justMonth: true,
        create: function(input, inst) {
            $(".ui-datepicker table").addClass("badbad");
        },
        onClose: function(dateText, inst) {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
});

justMonth: true কী এখানে :)


2

ওয়াহাট সম্পর্কে: http://www.mattkruse.com/ জাভাস্ক্রিপ্ট / ক্যালেন্ডারপপআপ /

মাস-নির্বাচন উদাহরণ নির্বাচন করুন


যেহেতু আমি ইতিমধ্যে jquery ডেটপিকার ব্যবহার করছি, তাই আমি এটি ব্যবহার করতে বা মাস এবং বছর নিজে হাতে তৈরি করতে পছন্দ করি।
আনু

2

উপরের দিকে ব্রায়ানসের প্রায় নিখুঁত প্রতিক্রিয়ার জন্য বেশ কয়েকটি সংশোধন করেছেন:

  1. আমি শোতে মান সেটটি পুনরায় তৈরি করেছি কারণ আমার মনে হয় এটি আসলে এটিকে এ ক্ষেত্রে আরও কিছুটা পাঠযোগ্য করে তোলে (যদিও নোট আমি কিছুটা আলাদা ফর্ম্যাট ব্যবহার করছি)

  2. আমার ক্লায়েন্ট কোনও ক্যালেন্ডার চাননি তাই আমি অন্য কোনও ডেটপিকারকে প্রভাবিত না করে এটি করার জন্য শো / লুকানোর ক্লাস সংযোজন যুক্ত করেছি। ডেটপিকারটি ফিকে হয়ে যাওয়ার সাথে সাথে টেবিলটি ঝলকানো এড়ানোর জন্য ক্লাসটি অপসারণের সময়সীমাতে রয়েছে যা আইই-তে খুব লক্ষণীয় বলে মনে হয়।

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

সম্পাদনা 2: আমি এটিকে সুন্দরভাবে সমাধান করতে পারি না (অর্থাত্ ইনপুটটির পাশে আলাদা আলাদা ক্লিয়ার বোতাম যুক্ত না করে) তাই এটি ব্যবহার করে শেষ হয়েছে: https://github.com/thebrowser/jquery.ui.monthpicker - যদি কেউ পারেন আশ্চর্যজনক হবে এমনটি করার জন্য মানক UI পান।

    $('.typeof__monthpicker').datepicker({
        dateFormat: 'mm/yy',
        showButtonPanel:true,
        beforeShow: 
            function(input, dpicker)
            {                           
                if(/^(\d\d)\/(\d\d\d\d)$/.exec($(this).val()))
                {
                    var d = new Date(RegExp.$2, parseInt(RegExp.$1, 10) - 1, 1);

                    $(this).datepicker('option', 'defaultDate', d);
                    $(this).datepicker('setDate', d);
                }

                $('#ui-datepicker-div').addClass('month_only');
            },
        onClose: 
            function(dt, dpicker)
            {
                setTimeout(function() { $('#ui-datepicker-div').removeClass('month_only') }, 250);

                var m = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                var y = $("#ui-datepicker-div .ui-datepicker-year :selected").val();

                $(this).datepicker('setDate', new Date(y, m, 1));
            }
    });

আপনারও এই স্টাইলের নিয়ম দরকার:

#ui-datepicker-div.month_only .ui-datepicker-calendar {
display:none
}

2

আমি @ ব্যবহারকারী 1857829 উত্তর এবং তার "এক্সটেনড-জেকুরি-এর মতো একটি প্লাগইন অ্যাপ্রোচ" পছন্দ করেছি। আমি কেবল একটি লিট পরিবর্তন করেছি যাতে আপনি যখন কোনওভাবে মাস বা বছর পরিবর্তন করেন তখন পিকারটি আসলে ক্ষেত্রটিতে তারিখটি লেখেন। আমি খুঁজে পেয়েছি যে আমি এটি ব্যবহার করার পরে কিছুটা ব্যবহার করব।

jQuery.fn.monthYearPicker = function(options) {
  options = $.extend({
    dateFormat: "mm/yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    showAnim: "",
    onChangeMonthYear: writeSelectedDate
  }, options);
  function writeSelectedDate(year, month, inst ){
   var thisFormat = jQuery(this).datepicker("option", "dateFormat");
   var d = jQuery.datepicker.formatDate(thisFormat, new Date(year, month-1, 1));
   inst.input.val(d);
  }
  function hideDaysFromCalendar() {
    var thisCalendar = $(this);
    jQuery('.ui-datepicker-calendar').detach();
    // Also fix the click event on the Done button.
    jQuery('.ui-datepicker-close').unbind("click").click(function() {
      var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
      var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
      thisCalendar.datepicker('setDate', new Date(year, month, 1));
      thisCalendar.datepicker("hide");
    });
  }
  jQuery(this).datepicker(options).focus(hideDaysFromCalendar);
}

2

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

বেন কোহেলারের গৃহীত উত্তরের তৃতীয় (সর্বশেষ) সংস্করণের চেয়ে এখানে বেশ কয়েকটি ক্লিনার সমাধান রয়েছে । তদতিরিক্ত, এটি করবে:

  • কেবলমাত্র mm/yyফর্ম্যাটটিই নয়, ওপিসহ অন্য যে কোনও একটির সাথে কাজ করুন MM yy
  • পৃষ্ঠায় অন্যান্য তারিখপিকারদের ক্যালেন্ডারটি গোপন করবেন না।
  • পরোক্ষভাবে সঙ্গে বিশ্বব্যাপী জাতীয় বস্তু দূষিত না datestr, month, yearইত্যাদি ভেরিয়েবল।

এটা দেখ:

$('.date-picker').datepicker({
    dateFormat: 'MM yy',
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    onClose: function (dateText, inst) {
        var isDonePressed = inst.dpDiv.find('.ui-datepicker-close').hasClass('ui-state-hover');
        if (!isDonePressed)
            return;

        var month = inst.dpDiv.find('.ui-datepicker-month').find(':selected').val(),
            year = inst.dpDiv.find('.ui-datepicker-year').find(':selected').val();

        $(this).datepicker('setDate', new Date(year, month, 1)).change();
        $('.date-picker').focusout();
    },
    beforeShow: function (input, inst) {
        var $this = $(this),
            // For the simplicity we suppose the dateFormat will be always without the day part, so we
            // manually add it since the $.datepicker.parseDate will throw if the date string doesn't contain the day part
            dateFormat = 'd ' + $this.datepicker('option', 'dateFormat'),
            date;

        try {
            date = $.datepicker.parseDate(dateFormat, '1 ' + $this.val());
        } catch (ex) {
            return;
        }

        $this.datepicker('option', 'defaultDate', date);
        $this.datepicker('setDate', date);

        inst.dpDiv.addClass('datepicker-month-year');
    }
});

এবং আপনার যা যা প্রয়োজন তা হ'ল আশেপাশের কোথাও নীচের সিএসএস:

.datepicker-month-year .ui-datepicker-calendar {
    display: none;
}

এটাই. আশা করি উপরেরগুলি আরও পাঠকদের জন্য কিছুটা সময় সাশ্রয় করবে।


1
জাস্ট এবং এফওয়াইআই। লাইন 'inst.dpDiv.addClass (' ডেটপিকার-মাস-বছর ');' ডেটপিকারের ক্যালেন্ডার ডিভেতে পুরো মাস-বছর যুক্ত করবে, অর্থাত্ যদি ডেটপিকারের সাথে অন্য কোনও তারিখের ক্ষেত্র থাকে তবে সে কারণে তারা কাজ করা বন্ধ করে দেবে। যেহেতু ক্যালেন্ডারের জন্য শুধুমাত্র একটি ডিভ আছে, তাই এটি একটি '$ ('। ডেটপিকার-মাস-বছর ') যুক্ত করা আকর্ষণীয় হবে remove ট্রেডিশনাল ক্যালেন্ডারের প্রয়োজন হয় এমন অন্য কোনও ডেটপিক্সারের উপর পূর্বের প্রদর্শনটি ব্যবহার করুন। বা, আপনি ফোকাস হারিয়ে ফেললে ক্লাসটি সরিয়ে ফেলুন। তবে আমি এপিআই
জনি বিগুড

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

1

আমি জানি এটি একটু দেরি হয়ে গেছে, তবে বেশ কয়েকদিন আগেও একই সমস্যা পেয়েছি এবং আমি একটি সুন্দর ও মসৃণ সমাধান নিয়ে এসেছি। প্রথমে আমি এই দুর্দান্ত তারিখ চয়নকারীকে এখানে পেয়েছি

তারপরে আমি সবেমাত্র সিএসএস ক্লাস আপডেট করেছি (jquery.cocolatePicker.css) যা উদাহরণটির সাথে এই রকম আসে:

.calMonth {
  /*border-bottom: 1px dashed #666;
  padding-bottom: 5px;
  margin-bottom: 5px;*/
}

.calDay 
{
    display:none;
}

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

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


1

আমারও এক মাস বাছাই করা দরকার needed আমি হেডারে বছরের সাথে নীচে এবং 4 মাসের নীচে 3 সারি দিয়ে একটি সাধারণ তৈরি করেছি। এটি পরীক্ষা করে দেখুন: jQuery সহ সাধারণ মাসিয়ার চয়নকারী


1

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

সেরা (চেহারা ইত্যাদিতে) 'চয়নকারী' ( https://github.com/thebrowser/jquery.ui.monthpicker ) এখানে প্রস্তাবিত মূলত _জেনারেট এইচটিএমএল পুনর্লিখনের সাথে jquery-ui ডেটপিকারের একটি পুরানো সংস্করণের অনুলিপি। তবে, আমি দেখতে পেলাম যে এটি আর বর্তমান জ্যাকোরি-ইউআই (১.১০.২) এর সাথে সুন্দরভাবে খেলছে না এবং এতে অন্যান্য সমস্যা রয়েছে (এসকেটে বন্ধ হয় না, অন্যান্য উইজেট খোলার সময় বন্ধ হয় না, হার্ডকোড শৈলী রয়েছে)।

সেই মাসপিককারকে ঠিক করার চেষ্টা করার পরিবর্তে এবং সর্বশেষতম ডেটপিকারের সাথে একই প্রক্রিয়াটির পুনরায় চেষ্টা করার পরিবর্তে, আমি বিদ্যমান তারিখ চয়নকারীর প্রাসঙ্গিক অংশগুলিতে ঝুঁকে পড়ি।

এর মধ্যে ওভাররাইড জড়িত:

  • _ জেনারেট এইচটিএমএল (মাস চয়নকারী মার্কআপ তৈরি করতে)
  • পার্সডেট (যেমন কোনও দিন উপাদান নেই যখন এটি এটি পছন্দ করে না),
  • _সलेक्ट দিন (তারিখ পিকার হিসাবে দিনের মান পেতে .html () ব্যবহার করে)

যেহেতু এই প্রশ্নটি কিছুটা পুরানো এবং ইতিমধ্যে ভাল উত্তর দেওয়া হয়েছে, এটি কীভাবে হয়েছিল তা দেখানোর জন্য এখানে কেবলমাত্র_সিলিটডেই ওভাররাইড রয়েছে:

jQuery.datepicker._base_parseDate = jQuery.datepicker._base_parseDate || jQuery.datepicker.parseDate;
jQuery.datepicker.parseDate = function (format, value, settings) {
    if (format != "M y") return jQuery.datepicker._hvnbase_parseDate(format, value, settings);
    // "M y" on parse gives error as doesn't have a day value, so 'hack' it by simply adding a day component
    return jQuery.datepicker._hvnbase_parseDate("d " + format, "1 " + value, settings);
};

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


0

এক মাস পিকারের জন্য, জিকুয়ারি ভি 1.7.2 ব্যবহার করে আমার কাছে নিম্নলিখিত জাভাস্ক্রিপ্ট রয়েছে যা কেবল এটি করছে

$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});


0

বেন কোহেলার সমাধানের জন্য ধন্যবাদ

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

$('.date-picker').datepicker({
    dateFormat: "mm/yy",
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    onClose: function(dateText, inst) {
        if($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1) {
            $(this).datepicker(
                'setDate',
                new Date(
                    $("#ui-datepicker-div .ui-datepicker-year :selected").val(),
                    $("#ui-datepicker-div .ui-datepicker-month :selected").val(),
                    1
                )
            ).trigger('change');
            $('.date-picker').focusout();
        }
        $("#ui-datepicker-div").removeClass("month_year_datepicker");
    },
    beforeShow : function(input, inst) {
        if((datestr = $(this).val()).length > 0) {
            year = datestr.substring(datestr.length-4, datestr.length);
            month = datestr.substring(0, 2);
            $(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
            $(this).datepicker('setDate', new Date(year, month-1, 1));
            $("#ui-datepicker-div").addClass("month_year_datepicker");
        }
    }
});

-2

onSelectকল ব্যাক ব্যবহার করুন এবং বছরের অংশটি ম্যানুয়ালি সরান এবং ক্ষেত্রটিতে পাঠ্যটি ম্যানুয়ালি সেট করুন


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