কীভাবে পজ-আপ অবস্থানটি jQuery ডেটপিকার নিয়ন্ত্রণের পরিবর্তন করবেন


109

ডেটপিকারটি সরাসরি নীচের পরিবর্তে সম্পর্কিত পাঠ্য বাক্সের শেষে উপস্থিত হওয়ার কীভাবে ধারণা? যেটি ঘটতে পারে তা হ'ল পাঠ্য বাক্সটি পৃষ্ঠার নীচের দিকে এবং ডেটপিকারটি তার অ্যাকাউন্টে স্থানান্তরিত করে এবং সম্পূর্ণরূপে পাঠ্য বাক্সটি কভার করে। ব্যবহারকারী যদি এটি বাছাইয়ের পরিবর্তে তারিখটি টাইপ করতে চান তবে তারা পারবেন না। আমি বরং এটি পাঠ্য বাক্সের ঠিক পরে উপস্থিত হতে চাই যাতে এটি উল্লম্বভাবে কীভাবে সামঞ্জস্য হয় তা বিবেচনা করে না।

কোনও অবস্থান কীভাবে নিয়ন্ত্রণ করতে হবে? আমি উইজেটের জন্য কোনও সেটিংস দেখতে পাইনি, এবং সিএসএস সেটিংসে টুইট করার কোনও ভাগ্য আমার নেই, তবে আমি সহজেই কিছু অনুপস্থিত হতে পারি।


1
আপনার অভিযোগটি ডি_এন-এর সমাধান নয়, কেবল অভিযোগকে "আটকানো" না করার জন্য +1।
লিওনিডাস

উত্তর:


20

এই প্রশ্নের স্বীকৃত উত্তর আসলে jQuery UI ডেটপিকারের নয়। JQuery UI তারিখপিকারের অবস্থান পরিবর্তন করতে কেবল CSS ফাইলটিতে .ui-তারিখপিকারকে সংশোধন করুন। ডেটপিকারের আকারও এইভাবে পরিবর্তন করা যেতে পারে, কেবল ফন্টের আকারকে সামঞ্জস্য করুন।


4
আপনি দয়া করে আমাকে বলতে পারেন আপনি কোন পরিবর্তন করেছেন?
এডি

1
@ জিফ্রিজ্জল - হ্যাঁ, আমার এই উত্তরটি খুব ভুল ছিল। অবশেষে এটি বিন্যাস কাছাকাছি পেয়েছিলাম। তখন আমি কী সম্পর্কে ফিরে আসছি সে সম্পর্কে ধারণা নেই: /
কেভ

64
এটি কেন সম্পূর্ণরূপে অকেজো কারণ এটি গ্রহণযোগ্য উত্তর কেন আমার কোনও ধারণা নেই।
সফটওয়্যার ইঞ্জিনিয়ার

10
উত্তরটি হল datepicker যেমন সম্পূর্ণ অকেজো হবে পরিবর্তনশীল উইজেট পপিং আপ সামনে মডিফাই .ui-datepicker এর CSS।
হোয়াইটফলার

4
এই উত্তরটি কোনও বিবরণ দেয় না এবং গ্রহণযোগ্য উত্তর হওয়া উচিত নয়।
চ্যাপেলজুইস

120

আমি যা ব্যবহার করছি তা এখানে:

$('input.date').datepicker({
    beforeShow: function(input, inst)
    {
        inst.dpDiv.css({marginTop: -input.offsetHeight + 'px', marginLeft: input.offsetWidth + 'px'});
    }
});

আপনি বাম মার্জিনে আরও কিছুটা যুক্ত করতে চাইতে পারেন যাতে ইনপুট ফিল্ডটি ঠিক না হয়।


2
ভাল কৌশল। সমস্যাটি হ'ল যে ক্ষেত্রে ডেটপিকারটি পর্দার সীমানা ছাড়িয়ে দেখানো হয়, _ শোডেটপিকর এটিকে স্থানান্তরিত করার চেষ্টা করবে, সুতরাং, উপরের এবং বামটি আলাদা এবং মার্জিনটপ হবে, মার্জিন লেফটকে সুরের প্রয়োজন হতে পারে।
monzonj

1
আমি একটি অনুরূপ পন্থা ব্যবহার করেছি - আমি আপনার আগে দেখানোর মতামত নিয়েছি, তবে আমার পূর্ববর্তী শো ফাংশনটি JQueryUI এর অবস্থানের প্রভাবটি $(this).position(my:'left top', at:'left bottom', of:'#altField')ব্যবহার করে : (যেহেতু আমি altFieldপ্রদর্শনের জন্য ডেটপিকারের বিকল্পটি ব্যবহার করছি )
আইজাক বিটেশ

এটি মার্জিন সেট করতে কাজ করতে পারে তবে "বাম", "শীর্ষ", "জেড-ইনডেক্স" এবং "অবস্থান" বৈশিষ্ট্যগুলির জন্য ব্যর্থ।
অ্যারোনবাউমান

আমি এটি যেমন বুঝতে পারি, এটি কোনওভাবেই কাজ করে না, কারণ jquery শো বলার আগে অবস্থানটি পুনরায় সেট করে।
সফটওয়্যার ইঞ্জিনিয়ার

উত্তরটি হল ভুল কারণ datepicker beforeShow () ফিরে পর অবস্থান পুনরায় সেট করবে।
whaefelinger

40

আমি এটি সরাসরি সিএসএসে করি:

.ui-datepicker { 
  margin-left: 100px;
  z-index: 1000;
}

আমার তারিখ ইনপুট ক্ষেত্রগুলি সমস্ত 100px প্রশস্ত। আমি জেড-ইনডেক্সও যুক্ত করেছি যাতে ক্যালেন্ডারটিও এজেএক্স পপআপগুলির উপরে প্রদর্শিত হয়।

আমি jquery-ui CSS ফাইলটি পরিবর্তন করি না; আমি আমার প্রধান সিএসএস ফাইলে ক্লাসটি ওভারলোড করি, তাই আমি আমার নির্দিষ্ট মোডগুলিতে পুনরায় প্রবেশ না করে থিমটি পরিবর্তন করতে বা উইজেট আপডেট করতে পারি।


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

বুটস্ট্র্যাপ ব্যবহার করে আমার জন্য কাজ করেছেন :) তবে আমি কেবল জেড-ইনডেক্স সম্পত্তি সেট করে রেখেছি।
ফ্রান্সিসকো গোল্ডেনস্টাইন

তুচ্ছ বাস্তবায়ন ব্যতীত অন্য কিছুর জন্য অকার্যকর কারণ আপনি পৃষ্ঠাতে কোথায় ইনপুট ক্ষেত্রটি জানেন না।
সফটওয়্যার ইঞ্জিনিয়ার

35

এখানে আমার ডেটপিকার ক্যালেন্ডার প্রান্তিককরণের প্রকরণ রয়েছে।

আমি মনে করি এটি বেশ সুন্দর, কারণ আপনি jQuery UI অবস্থান ব্যবহারের মাধ্যমে অবস্থান নিয়ন্ত্রণ করতে পারেন control

একটি সীমাবদ্ধতা: jquery.ui.position.js প্রয়োজন।

কোড:

$('input[name=date]').datepicker({
    beforeShow: function(input, inst) {
        // Handle calendar position before showing it.
        // It's not supported by Datepicker itself (for now) so we need to use its internal variables.
        var calendar = inst.dpDiv;

        // Dirty hack, but we can't do anything without it (for now, in jQuery UI 1.8.20)
        setTimeout(function() {
            calendar.position({
                my: 'right top',
                at: 'right bottom',
                collision: 'none',
                of: input
            });
        }, 1);
    }
})

আপনাকে @ কোটেনেটর ধন্যবাদ, এটি সত্যই দরকারী (উদাহরণস্বরূপ পজিশন.জেএস)!
সেবাস্তিয়ান

এই উত্তরগুলি পজিশন.জেসের যোগ্যতা ছাড়া আর কিছুই দেখায় না।
হোয়াফেলিংগার

এটি এখনও v1.11.4 এ কাজ করে তবে এটি সত্যিই একটি নোংরা হ্যাক, খুব খারাপ jQuery API আমাদের কোনও afterShowপদ্ধতিতে এটি করতে দেয় না ।
স্কুয়া

29

এখানে আরেকটি প্রকরণ যা আমার পক্ষে ভাল কাজ করে, আপনার প্রয়োজন অনুসারে রেকট.টপ + ৪০, রেক্টটেলফিট + 0 সামঞ্জস্য করুন:

$(".datepicker").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'mm/dd/yy',
    beforeShow: function (input, inst) {
        var rect = input.getBoundingClientRect();
        setTimeout(function () {
	        inst.dpDiv.css({ top: rect.top + 40, left: rect.left + 0 });
        }, 0);
    }
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<form>
<input class="datepicker" name="date1" type="text">
<input class="datepicker" name="date2" type="text">
</form>


বাহ এটা কাজ করে। "Inst.dpDiv.css (" শীর্ষ "," 40px! গুরুত্বপূর্ণ ") ব্যবহার করা; কাজ করে না!
পান্না

একটি সময়সীমা প্রবর্তন করে একটি অগ্রগতিজনিত সমস্যা কাটিয়ে উঠতে পারছেন না।
হোয়াফেলিংগার

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

16

এটি আমার পক্ষে কাজ করে:

 beforeShow: function(input, inst) {
     var cal = inst.dpDiv;
     var top  = $(this).offset().top + $(this).outerHeight();
     var left = $(this).offset().left;
     setTimeout(function() {
        cal.css({
            'top' : top,
            'left': left
        });
     }, 10);

6

প্রথমে আমি মনে করি afterShowingডেটপিকার অবজেক্টে একটি পদ্ধতি থাকা উচিত , যেখানে jquery _showDatepickerপদ্ধতিতে সমস্ত ভুডু করার পরে আপনি অবস্থান পরিবর্তন করতে পারেন । তদ্ব্যতীত, একটি প্যারামিটারও preferedPositionআকাঙ্ক্ষিত হবে, যাতে আপনি ভিউপোর্টের বাইরে ডায়ালগটি রেন্ডার করার ক্ষেত্রে এটি সেট করে এবং jquery এটিকে পরিবর্তন করতে পারেন।

এই শেষ কাজটি করার একটি "কৌশল" আছে। আপনি যদি _showDatepickerপদ্ধতিটি অধ্যয়ন করেন তবে আপনি একটি ব্যক্তিগত ভেরিয়েবলের ব্যবহার দেখতে পাবেন $.datepikcer._pos। যদি কেউ এর আগে সেট আপ না করে তবে সেই পরিবর্তনশীলটি সেটআপ হয়ে যাবে। ডায়ালগটি দেখানোর আগে আপনি যদি সেই পরিবর্তনশীলটি পরিবর্তন করেন তবে জ্যাকোরি এটি গ্রহণ করবে এবং সেই অবস্থানটিতে ডায়ালগটি বরাদ্দ দেওয়ার চেষ্টা করবে এবং যদি এটি স্ক্রিন থেকে বেরিয়ে যায় তবে তা এটি দৃশ্যমান তা নিশ্চিত করার জন্য এটি সামঞ্জস্য করবে। ভাল লাগছে, তাই না?

সমস্যা হ'ল; _posব্যক্তিগত, কিন্তু আপনি যদি এটি আপত্তি না। আপনি পারেন:

$('input.date').datepicker({
    beforeShow: function(input, inst)
    {
        $.datepicker._pos = $.datepicker._findPos(input); //this is the default position
        $.datepicker._pos[0] = whatever; //left
        $.datepicker._pos[1] = whatever; //top
    }
});

তবে জ্যাকুই-ইউআই আপডেটগুলি সম্পর্কে সতর্ক থাকুন, কারণ অভ্যন্তরীণ বাস্তবায়নের পরিবর্তনের ফলে _showDatepickerআপনার কোডটি ভেঙে যেতে পারে।


1
তাদের এটি কনফিগারযোগ্য আইটেম হিসাবে jQuery UI এ যুক্ত করা উচিত ছিল।
আলেকসেজ কমারভ

3

আমার সীমান্তহীন ইনপুট নিয়ন্ত্রণের মধ্যে থাকা একটি পিতামহীন ডিভ অনুসারে আমাকে ডেটপিকারকে অবস্থান দেওয়া দরকার। এটি করার জন্য, আমি jquery UI কোর অন্তর্ভুক্ত "অবস্থান" ইউটিলিটি ব্যবহার করেছি। আমি এর আগে শো ইভেন্টে এটি করেছি। অন্যরা উপরের মতামত হিসাবে, আপনি সরাসরি আগে পজিশনটি সেট করতে পারবেন না, ডেট পিকার কোডটি পূর্বের শো ফাংশন শেষ করে অবস্থানটি পুনরায় সেট করবে। এটি পেতে, কেবল সেটইন্টারভাল ব্যবহার করে অবস্থান নির্ধারণ করুন। বর্তমান স্ক্রিপ্টটি ডেটপিকারকে দেখিয়ে সম্পূর্ণ হবে এবং তারিখ পিকারটি দৃশ্যমান হওয়ার পরে অবধি অবস্থানের কোডটি চলবে। যদিও এটি কখনও ঘটবে না, যদি ডেটপিকারটি .5 সেকেন্ডের পরে দৃশ্যমান না হয়, তবে কোডটি বিরতি ছাড়াই এবং বিরতি পরিষ্কার করতে ব্যর্থ।

        beforeShow: function(a, b) {
            var cnt = 0;
            var interval = setInterval(function() {
                cnt++;
                if (b.dpDiv.is(":visible")) {
                    var parent = b.input.closest("div");
                    b.dpDiv.position({ my: "left top", at: "left bottom", of: parent });
                    clearInterval(interval);
                } else if (cnt > 50) {
                    clearInterval(interval);
                }
            }, 10);
        }

খুব কুৎসিত সমাধান। সবচেয়ে বড় সমস্যা হ'ল হঠাৎ আপনার "স্থানান্তর" লাথি মারার পরে ডেটপিকার উইজেটটি নজরে পড়ার মতো "জাম্প" হবে all যাবতীয় মূল্যে এড়াতে।
হোয়াফেলিংগার

2

ডেটপিকারের উইজেট ইচ্ছুক সাহায্যের তারিখ-পিকার পরিবর্তন সিএসএস ব্যবহারের পরে ফোকাসইন বাঁধুন

$('input.date').datepicker();
$('input.date').focusin(function(){
    $('input.date').datepicker('widget').css({left:"-=127"});
});

2

আমি আমার কাস্টম jquery কোড দিয়ে এটি ঠিক করেছি।

  1. আমার datepicker ইনপুট ক্ষেত্র একটি শ্রেণী "দিয়েছেন .datepicker2 "

  2. শীর্ষ থেকে এবং এর বর্তমান অবস্থানটি সন্ধান করুন

  3. পপআপ বক্সে অবস্থিত, কোন শ্রেণীর নাম " .ui-datepicker "

এখানে আমার কোড।

$('.datepicker2').click(function(){
    var popup =$(this).offset();
    var popupTop = popup.top - 40;
    $('.ui-datepicker').css({
      'top' : popupTop
     });
});

এখানে "40" হ'ল আমার প্রত্যাশিত পিক্সেল, আপনি নিজেরটি দিয়ে পরিবর্তন করতে পারেন।


1

শো পজিশনের সমস্যাটি ডেটরেঞ্জপিকার.জিকিউ.আর.এস

//Original Code
//show, hide, or toggle rangepicker
    function showRP() {
        if (rp.data('state') == 'closed') {
            rp.data('state', 'open');
            rp.fadeIn(300);
            options.onOpen();
        }
    }


//Fixed
//show, hide, or toggle rangepicker
    function showRP() {
        rp.parent().css('left', rangeInput.offset().left);
        rp.parent().css('top', rangeInput.offset().top + rangeInput.outerHeight());
        if (rp.data('state') == 'closed') {
            rp.data('state', 'open');
            rp.fadeIn(300);
            options.onOpen();
        }
    }

1

একটি খুব সাধারণ jquery ফাংশন।

$(".datepicker").focus(function(event){
                var dim = $(this).offset();
                $("#ui-datepicker-div").offset({
                    top     :   dim.top - 180,
                    left    :   dim.left + 150
                });
            });

1

আমি যে নতুন সাইটের বিকাশ করছি তার বেশ কয়েকটি পৃষ্ঠার জন্য এই সমস্যাটি বের করার চেষ্টা করার জন্য আমি একটি হাস্যকর সময় ব্যয় করেছি এবং কিছুই কার্যকর হয়নি বলে মনে হয়েছে (উপরে যে উপস্থাপিত বিভিন্ন সমাধান রয়েছে তার কোনওটিই আমি সহ প্রয়োগ করেছি I'm আমি অনুমান করছি যে jQuery সবেমাত্র পরিবর্তিত হয়েছে) যথেষ্ট পরিমাণে বিষয়গুলির জন্য তাদের পরামর্শ দেওয়া হয়েছিল যে সমাধানগুলি আর 'কাজ করে না I আমি জানি না Hon সত্যি কথা, কেন কনফিগার করার জন্য jQuery ui- তে কিছু সাধারণ প্রয়োগ করা হয়নি তা আমি বুঝতে পারছি না বলে মনে হচ্ছে as ক্যালেন্ডার সহ একটি মোটামুটি বড় ইস্যু সর্বদা পৃষ্ঠায় পপআপ করে পপ আপের থেকে ইনপুট থেকে এটি খুব বেশি সংযুক্ত থাকে।

যাইহোক, আমি একটি শেষ সমাধান চেয়েছিলাম যা যথেষ্ট জেনেরিক যে আমি এটি যে কোনও জায়গায় ব্যবহার করতে পারি এবং এটি কার্যকর হবে। আমি শেষ পর্যন্ত এমন সিদ্ধান্তে পৌঁছেছি যা উপরে আরো জটিল এবং jQuery- কোড-নির্দিষ্ট উত্তরগুলি এড়িয়ে চলেছে:

জেএসফিডাল: http://jsfiddle.net/mu27tLen/

এইচটিএমএল:

<input type="text" class="datePicker" />

জাতীয়:

positionDatePicker= function(cssToAdd) {
    /* Remove previous positioner */
    var oldScript= document.getElementById('datePickerPosition');
    if(oldScript) oldScript.parentNode.removeChild(oldScript);
    /* Create new positioner */
    var newStyle= document.createElement("style");
    newStyle.type= 'text/css';
    newStyle.setAttribute('id', 'datePickerPostion');
    if(newStyle.styleSheet) newStyle.styleSheet.cssText= cssToAdd;
    else newStyle.appendChild(document.createTextNode(cssToAdd));
    document.getElementsByTagName("head")[0].appendChild(newStyle);
}
jQuery(document).ready(function() {
    /* Initialize date picker elements */
    var dateInputs= jQuery('input.datePicker');
    dateInputs.datepicker();
    dateInputs.datepicker('option', {
        'dateFormat' : 'mm/dd/yy',
        'beforeShow' : function(input, inst) {
            var bodyRect= document.body.getBoundingClientRect();
            var rect= input.getBoundingClientRect();
            positionDatePicker('.page #ui-datepicker-div{z-index:100 !important;top:' + (rect.top - bodyRect.top + input.offsetHeight + 2) + 'px !important;}');
        }
    }).datepicker('setDate', new Date());
});

মূলত আমি প্রতিটি ডেটপিকার "শো" ইভেন্টের আগে মাথায় একটি নতুন স্টাইল ট্যাগ সংযুক্ত করি (উপস্থিত থাকলে পূর্ববর্তীটি মোছা হয়)। জিনিসগুলি করার এই পদ্ধতিটি বিকাশের সময় আমি যে সমস্যার মধ্যে পড়েছিলাম তার একটি বিশাল সংখ্যাগরিষ্ঠতা পেয়ে যায়।

ক্রোম, ফায়ারফক্স, সাফারি এবং আই>> 8 এ পরীক্ষিত (যেমন IE8 জেএসফিডেলের সাথে ভাল কাজ করে না এবং যত্ন নেওয়ার জন্য আমি আমার প্রতিভাত হারাচ্ছি

আমি জানি যে এটি jQuery এবং জাভাস্ক্রিপ্ট প্রসঙ্গে একটি মিশ্রণ, তবে এই মুহুর্তে আমি চেষ্টাটিকে জিক্যুরিতে রূপান্তরিত করতে চাই না। সহজ হবে, আমি জানি। আমি এখনই এই জিনিসটি দিয়ে এতক্ষণে শেষ করেছি। আশা করি এই সমাধান থেকে অন্য কেউ উপকৃত হতে পারেন।


1

তারা ক্লাসের নাম পরিবর্তন করে ui-datepicker-trigger

সুতরাং এটি কাজ করে jquery 1.11.x

.ui-datepicker-trigger { 
margin-top:7px;
  margin-left: -30px;
  margin-bottom:0px;
  position:absolute;
  z-index:1000;
}

1

আমি এটি থেকে নিয়েছি (( কীভাবে jQueryUI ডেটপিকারের অবস্থান নির্ধারণ করতে হবে ))

ex। Extend (date ডেটপিকার, {_ চেকঅফসেট: ফাংশন (ইনস্টল, অফসেট, আইফিক্সড)) রিটার্ন অফসেট}});

এটা কাজ !!!


উত্তরটি ইতিমধ্যে ইতিমধ্যে ইতিমধ্যে উত্তর দেওয়া হলেও এটি সঠিক।
হোয়াফেলিংগার

1

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

dateSelect.focus(function () {
    $("#ui-datepicker-div").position({
        my: "left top",
        at: "left bottom",
        of: $(this)
    });
});

সেরা / সবচেয়ে সঠিক উত্তর !!
হিরসুটজিম

0

এটিও লক্ষণীয় যে, আইই যদি কুইর্কস মোডে পড়ে, আপনার jQuery UI উপাদান এবং অন্যান্য উপাদানগুলি ভুলভাবে অবস্থিত হবে।

আপনি কুইর্কস মোডে না পড়েছেন তা নিশ্চিত করতে আপনি আপনার ডক্টিপটি সর্বশেষতম HTML5- এ সঠিকভাবে সেট করেছেন তা নিশ্চিত করুন।

<!DOCTYPE html>

ট্রানজিশনাল ব্যবহার জিনিসগুলিতে গোলমাল করে। আশা করি এটি ভবিষ্যতে কাউকে কিছুটা সময় সাশ্রয় করবে।


0

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

var nOffsetTop  = /* whatever value, set from wherever */;
var nOffsetLeft = /* whatever value, set from wherever */;

$(input).datepicker
(
   beforeShow : function(oInput, oInst) 
   { 
      AlterPostion(oInput, oInst, nOffsetTop, nOffsetLeft); 
   }
);

/* can be converted to extension, or whatever*/
var AlterPosition = function(oInput, oItst, nOffsetTop, nOffsetLeft)
{
   var divContainer = oInst.dpDiv;
   var oElem        = $(this);
       oInput       = $(oInput);

   setTimeout(function() 
   { 
      divContainer.css
      ({ 
         top  : (nOffsetTop >= 0 ? "+=" + nOffsetTop : "-=" + (nOffsetTop * -1)), 
         left : (nOffsetTop >= 0 ? "+=" + nOffsetLeft : "-=" + (nOffsetLeft * -1))
      }); 
   }, 10);
}

0

Jquery.UI এর মধ্যে, কেবলমাত্র_চেক অফসেস ফাংশনটি আপডেট করুন, যাতে অফসেটটি ফিরে আসার আগে ভিউহাইটটি অফসেট.টপটিতে যুক্ত হয়।

_checkOffset: function(inst, offset, isFixed) {
    var dpWidth = inst.dpDiv.outerWidth(),
    dpHeight = inst.dpDiv.outerHeight(),
    inputWidth = inst.input ? inst.input.outerWidth() : 0,
    inputHeight = inst.input ? inst.input.outerHeight() : 0,
    viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
            viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : ($(document).scrollTop()||document.body.scrollTop));
        offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
        offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
        offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? ($(document).scrollTop()||document.body.scrollTop) : 0;

        // now check if datepicker is showing outside window viewport - move to a better place if so.
        offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
            Math.abs(offset.left + dpWidth - viewWidth) : 0);
        offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
            Math.abs(dpHeight + inputHeight) : 0);
**offset.top = offset.top + viewHeight;**
        return offset;
    },

এই সমাধানটি মূলত সঠিক: jQuery.extend () এর মাধ্যমে আপনার নিজের _checkOffset () ফাংশনটি ইনজেক্ট করুন এবং সংখ্যাসূচক বৈশিষ্ট্যগুলি "শীর্ষ" এবং "বাম" থাকা যথা jQuery.extend (jQuery.datepicker, {_checkOffset: فنکشن) , অফসেট, আইফিক্সড) {রিটার্ন {শীর্ষ: মাইটোপ , বাম: মাইলেটফট };}}); যেখানে mytop এবং myleft আপনার ব্যক্তিগত পছন্দ অনুসারে, উদাহরণস্বরূপ থেকে প্রাপ্ত Inst
হোয়াফেলিংগার

0
.ui-datepicker {-ms-transform: translate(100px,100px); -webkit-transform: translate(100px,100px); transform: translate(100px,100px);}

ভোট কেন? এই সমস্যাটি সমাধান করে না? codepen.io/coconewty/pen/rajbNj
জেমস

votedown? কারণ আপনি কেবল প্রশ্নের শিরোনামটি পড়ছিলেন এবং আসল সমস্যাটি খনন করতে কোনও উদ্যোগ নেননি। কেবল ধরে নিন যে আপনার কাছে বিভিন্ন প্রস্থের সাথে ইনপুট ক্ষেত্রে দুটি ডেটপিকার সংযুক্ত রয়েছে। আপনার সমাধানটি কীভাবে নিশ্চিত করে যে প্রতিটি ডেট পিকার উইজেটের বাম প্রান্তটি ইনপুট ক্ষেত্রের ডান প্রান্তকে স্পর্শ করবে? অন্যদিকে, আপনার উত্তরগুলির মৌলিকতার জন্য আপনার কমপক্ষে একটি পয়েন্ট পাওয়া উচিত।
whaefelinger

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