jQuery ডেটপিকারটি পাঠ্য ইনপুট সহ যা ব্যবহারকারীদের ইনপুটটিকে অনুমতি দেয় না


140

পাঠ্যবক্স ইনপুট সহ আমি কীভাবে jQuery ডেটপিকারটি ব্যবহার করব:

$("#my_txtbox").datepicker({
  // options
});

যা ব্যবহারকারীকে টেক্সটবক্সে এলোমেলো পাঠ্য ইনপুট করতে দেয় না। পাঠ্যবক্সটি ফোকাস অর্জন করতে বা ব্যবহারকারী এতে ক্লিক করলে আমি ডেটপিকারটি পপআপ করতে চাই, তবে আমি চাই যে পাঠ্যবক্সটি কীবোর্ড (অনুলিপি এবং পেস্ট বা অন্য কোনও) ব্যবহার করে কোনও ব্যবহারকারী ইনপুট উপেক্ষা করবে ignore আমি ডেটপিকার পঞ্জিকা থেকে একচেটিয়া পাঠ্যবক্সটি পূরণ করতে চাই।

এটা কি সম্ভব?

jQuery
১.২.। তারিখপিকার 1.5.২.২

উত্তর:


269

আপনার পাঠ্য ইনপুটটিতে কেবলমাত্র পঠনযোগ্য বৈশিষ্ট্যটি ব্যবহার করতে সক্ষম হতে হবে এবং jQuery এখনও এর সামগ্রীগুলি সম্পাদনা করতে সক্ষম হবে।

<input type='text' id='foo' readonly='true'>

30
জাভাস্ক্রিপ্ট অক্ষম করা আছে এমন ব্যক্তিদের জন্য আমি ইনপুট ক্ষেত্রটি এইচটিএমএলটিতে একা রেখে দেব এবং jQuery এর কিছুটা পাতায় লোড on (ডকুমেন্ট) এ পঠনযোগ্য বৈশিষ্ট্যটি রেখে দেব ready প্রস্তুতি (ফাংশন () {"(" # my_txtbox ") att 'কেবলমাত্র পঠনযোগ্য', 'সত্য'); }); যেভাবে জেএস বন্ধ রয়েছে ব্যবহারকারীরা এখনও একটি তারিখ চয়ন করতে পারেন
সিমোন গেটস

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

1
@ ফুবার আপনি একটি বাস্তব সমাধান প্রস্তাব করেছেন; কেবলমাত্র একটি নোট যে কেবলমাত্র পাঠ্যদণ্ড নির্ধারণের জন্য আপনার পছন্দের উপায়টি (আপনার মন্তব্যের পরে কিছুটা সময় কেটে গেছে) প্রপ () পদ্ধতির মাধ্যমে রয়েছে:$("#my_txtbox").prop('readonly', true)
ওয়ার্নার

2
ডাব্লুসি 3 এইচটিএমএল স্পেসিফিকেশন অনুসারে সত্য / মিথ্যা ছাড়া এর কেবল <ইনপুট রিডোনলি> বা <ইনপুট রিডনলি = " রিডোনলি
অঙ্কিত শর্মা

5
আমি এটিকে ক্লিকযোগ্য করে তুলতে কার্সার পয়েন্টার ব্যবহার করব<input ... readonly="readonly" style="cursor:pointer; background-color: #FFFFFF">
বেনজামিন লুসিডার্মে

61

আমার অভিজ্ঞতার ভিত্তিতে আমি অ্যাডিপ গুপ্তের প্রস্তাবিত সমাধানটি সুপারিশ করব:

$("#my_txtbox").attr( 'readOnly' , 'true' );

নিম্নলিখিত কোডটি ব্যবহারকারীকে নতুন অক্ষর টাইপ করতে দেয় না , তবে তাদের অক্ষর মুছতে অনুমতি দেবে:

$("#my_txtbox").keypress(function(event) {event.preventDefault();});

অতিরিক্ত হিসাবে, এটি জাভাস্ক্রিপ্ট অক্ষম যারা ফর্ম অকেজো রেন্ডার হবে:

<input type="text" readonly="true" />

3
জাভাস্ক্রিপ্ট অক্ষম করা দৃশ্যের কারণে ওপিকে এটিকে উত্তর হিসাবে চিহ্নিত করা উচিত।
সিজিবিবি

7
সমান্তরাল মহাবিশ্বে লোকেরা অক্ষম জাভাস্ক্রিপ্ট সহ নিয়মিত ওয়েব সাইট ব্যবহার করে?
d.raev

জাভাস্ক্রিপ্ট যেভাবেই অক্ষম করা থাকলে এই জাভাস্ক্রিপ্টের উত্তর কীভাবে সহায়তা করবে?
পিডব্লিউ কাদ

1
@ পিডব্লু কেএডি জেএসের readonlyমাধ্যমে ক্ষেত্রটিতে বৈশিষ্ট্য যুক্ত করে আপনি নিশ্চিত করেছেন যে তারা যদি জাভাস্ক্রিপ্ট অক্ষম করে থাকে (এবং তাই ডেটপিকারটি ব্যবহার করতে সক্ষম হয় না) তবে তারা স্ট্যান্ডার্ড ম্যানুয়াল প্রবেশের মাধ্যমে ফর্মটি ব্যবহার করতে পারে।
জোনাথন বেন্ডার

2
লেখার সময়, এই jQuery ব্যবহার কেবলমাত্র অ্যাট্রিবিউট সেট করতে পছন্দের পথ হল: $("#my_txtbox").prop('readonly', true);
ওয়ার্নার

13

চেষ্টা

$("#my_txtbox").keypress(function(event) {event.preventDefault();});

আমি এএসপিএনটির সাথে এটি সাফল্যের সাথে ব্যবহার করেছি কারণ <আস্প: পাঠ্যবক্স> কেবলমাত্র "সত্য" এর গুণাবলী নির্ধারণের সময় এটি ভাল খেলেনি
রাশ ক্যাম

2
এটি কাউকে ভবিষ্যতের রেফারেন্সের জন্য পাঠ্যবক্সে কোনও মান আটকাতে বাধা দেয় না।
এরিক ফিলিপস

10

আপনি যদি একাধিক জায়গায় তারিখ-চয়নকারীকে পুনরায় ব্যবহার করছেন তবে জাভাস্ক্রিপ্টের মাধ্যমে পাঠ্যবাক্সটি এমন কিছু ব্যবহার করে সংশোধন করা ভাল:

$("#my_txtbox").attr( 'readOnly' , 'true' );

আপনি নিজের ডেটপিকারটি শুরু করার জায়গার ঠিক পরে / ঠিক আগে


6
<input type="text" readonly="true" />

পোস্টব্যাকের পরে পাঠ্যবাক্সটির মান হারাতে পারে।

আপনার পরিবর্তে ব্র্যাড 8118 এর পরামর্শটি ব্যবহার করা উচিত যা নিখুঁতভাবে কাজ করছে।

$("#my_txtbox").keypress(function(event) {event.preventDefault();});

সম্পাদনা করুন: IE এর জন্য এটি কাজ করতে 'কীপ্রেস' পরিবর্তে 'কীডাউন' ব্যবহার করুন


4
$("#txtfromdate").datepicker({         
    numberOfMonths: 2,
    maxDate: 0,               
    dateFormat: 'dd-M-yy'       
}).attr('readonly', 'readonly');

jquery এ পঠনযোগ্য বৈশিষ্ট্য যুক্ত করুন।


4

এটি সম্পন্ন করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে। (যতদুর আমি জানি)

  1. বিকল্প একটি: আপনার পাঠ্য ক্ষেত্রটি কেবল পঠনযোগ্য করে তুলুন। এটি নিম্নলিখিত হিসাবে করা যেতে পারে।

  2. বিকল্প বি: কার্ফার অনফোকাস পরিবর্তন করুন। অস্পষ্টতার জন্য টিআই সেট করুন। এটি onfocus="this.blur()"আপনার তারিখ চয়নকারী পাঠ্য ক্ষেত্রে বিশিষ্টতা স্থাপন করে করা যেতে পারে ।

উদা: <input type="text" name="currentDate" id="currentDate" onfocus="this.blur()" readonly/>


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


3

লাভ ফোকাসে ডেটপিকারকে পপআপ করতে:

$(".selector").datepicker({ showOn: 'both' })

আপনি যদি ব্যবহারকারী ইনপুট না চান, এটি ইনপুট ক্ষেত্রে যুক্ত করুন

<input type="text" name="date" readonly="readonly" />

3

আমি সবেমাত্র এদিকে এসেছি তাই আমি এখানে ভাগ করে নিচ্ছি। এখানে বিকল্প রয়েছে

https://eonasdan.github.io/bootstrap-datetimepicker/Options/#ignorereadonly

কোডটি এখানে।

এইচটিএমএল

<br/>
<!-- padding for jsfiddle -->
<div class="input-group date" id="arrival_date_div">
  <input type="text" class="form-control" id="arrival_date" name="arrival_date" required readonly="readonly" />
  <span class="input-group-addon">
    <span class="glyphicon-calendar glyphicon"></span>
  </span>
</div>

জাতীয়

$('#arrival_date_div').datetimepicker({
  format: "YYYY-MM-DD",
  ignoreReadonly: true
});

এই হৈচৈ

http://jsfiddle.net/matbaric/wh1cb6cy/

বুটস্ট্র্যাপ-ডেটটাইমপিকার.জেএস এর আমার সংস্করণটি 4.17.45


1

এই ডেমো সাজানোর ফলে পাঠ্য ক্ষেত্রের উপরে ক্যালেন্ডার স্থাপন করে আপনি এটিতে টাইপ করতে পারবেন না। আপনি কেবল HTML এ পড়ার জন্য ইনপুট ক্ষেত্রটিও সেট করতে পারেন নিশ্চিত হন।

<input type="text" readonly="true" />

1

এইচটিএমএল

<input class="date-input" type="text" readonly="readonly" />

সিএসএস

.date-input {
      background-color: white;
      cursor: pointer;
}

1

আমি জানি যে এই থ্রেডটি পুরানো, তবে অন্যদের ক্ষেত্রে যারা একই সমস্যার মুখোমুখি হন, তারা @ ব্র্যাড 8118 সমাধানটি প্রয়োগ করে (যা আমি পছন্দ করি, কারণ আপনি যদি ইনপুটটিকে কেবল পঠন করতে পছন্দ করেন তবে ব্যবহারকারী ডেটপিকার থেকে সন্নিবেশিত তারিখের মানটি মুছতে সক্ষম হবে না যদি তিনি চয়ন করেন) এবং এছাড়াও ব্যবহারকারীকে কোনও মান আটকে দেওয়া থেকে বিরত রাখতে হবে (যেমন @ এরিক ফিলিপস প্রয়োজন হিসাবে প্রস্তাবিত হয়েছিল), আমি এখানে এই সংযোজনটি দিচ্ছি, যা আমার পক্ষে কাজ করেছে: $("#my_txtbox").bind('paste',function(e) { e.preventDefault(); //disable paste });এখান থেকে https://www.dotnettricks.com/learn/ jquery / অক্ষম-কাট-অনুলিপি-এবং-পেস্ট-ইন-টেক্সটবক্স- ব্যবহার-jquery- জাভাস্ক্রিপ্ট এবং আমার দ্বারা ব্যবহৃত পুরো নির্দিষ্ট স্ক্রিপ্ট (পরিবর্তে fengyuanchen / তারিখপিকার প্লাগইন ব্যবহার করে):

$('[data-toggle="datepicker"]').datepicker({
    autoHide: true,
    pick: function (e) {
        e.preventDefault();
        $(this).val($(this).datepicker('getDate', true));
    }
}).keypress(function(event) {
    event.preventDefault(); // prevent keyboard writing but allowing value deletion
}).bind('paste',function(e) {
    e.preventDefault()
}); //disable paste;


0

আমি খুঁজে পেয়েছি যে আমার জন্য কমপক্ষে jQuery ক্যালেন্ডার প্লাগইন সাধারণত তারিখগুলি নির্বাচনের জন্য আরও ভাল কাজ করে।


0
$('.date').each(function (e) {
    if ($(this).attr('disabled') != 'disabled') {
        $(this).attr('readOnly', 'true');
        $(this).css('cursor', 'pointer');
        $(this).css('color', '#5f5f5f');
    }
});

0

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

<input type="text" id="my_txtbox" readonly />  <!--HTML5-->

<input type="text" id="my_txtbox" readonly="true"/>


0

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

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


0

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

readonlyআমার এইচটিএমএল উপাদানটিতে বৈশিষ্ট্য যুক্ত করার পরে , আমি এই সমস্যার মুখোমুখি হয়েছি যে আমি এই বৈশিষ্ট্যটিকে requiredগতিশীল হিসাবে তৈরি করতে পারছি না ।
এমনকি উভয় হিসাবে সেটিং চেষ্টা readonlyএবং requiredএইচটিএমএল সৃষ্টি সময়ে।

সুতরাং আমি আপনাকে এটিও readonlyসেট করতে চাইলে ব্যবহার না করার পরামর্শ দেব required

পরিবর্তে ব্যবহার

$("#my_txtbox").datepicker({
    // options
});

$("#my_txtbox").keypress(function(event) {
    return ( ( event.keyCode || event.which ) === 9 ? true : false );
});

এটি tabকেবল কী টিপতে দেয় ।
আপনি আরও কী-কোড যুক্ত করতে পারেন যা আপনি বাইপাস করতে চান।

আমি কোডটি নীচে রেখেছি যেহেতু আমি উভয়ই যুক্ত করেছি readonlyএবং requiredএটি এখনও ফর্মটি জমা দেয়।
অপসারণের পরে readonlyএটি সঠিকভাবে কাজ করে।

https://jsfiddle.net/shantaram/hd9o7eor/

$(function() {
  $('#id-checkbox').change( function(){
  	$('#id-input3').prop('required', $(this).is(':checked'));
  });
  $('#id-input3').datepicker();
  $("#id-input3").keypress(function(event) {
    return ( ( event.keyCode || event.which ) === 9 ? true : false );
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<link href="https://code.jquery.com/ui/jquery-ui-git.css" rel="stylesheet"/>

<form action='https://jsfiddle.net/'>
Name:  <input type="text" name='xyz' id='id-input3' readonly='true' required='true'> 
    <input type='checkbox' id='id-checkbox'> Required <br>
    <br>
    <input type='submit' value='Submit'>
</form>


0

সময় বাছাইকারীর আইডি প্রতিস্থাপন করুন: আপনার আইডিতে আইডিফডেটটাইমপিকার।

এটি ব্যবহারকারীর আরও কীবোর্ড ইনপুট প্রবেশ করতে বাধা দেবে কিন্তু তবুও, ব্যবহারকারী সময় পপআপ অ্যাক্সেস করতে সক্ষম হবেন।

$ ("# আমার_টেক্সটবক্স") ress কিপ্রেস (ফাংশন (ইভেন্ট) {ইভেন্ট.প্রিভেন্টডেফল্ট ();});

এই উত্সটি ব্যবহার করে দেখুন: https://github.com/jonthornton/jquery-Timepicker/issues/109


0

এই প্রশ্নের অনেকগুলি পুরানো উত্তর রয়েছে এবং কেবলমাত্র পঠনযোগ্যভাবেই সাধারণত গৃহীত সমাধান বলে মনে হয়। আমি বিশ্বাস করি আধুনিক ব্রাউজারগুলিতে আরও ভাল পদ্ধতির ব্যবহার হ'লinputmode="none" এইচটিএমএল ইনপুট ট্যাগটিতে ব্যবহার করা:

<input type="text" ... inputmode="none" />

বা, আপনি যদি স্ক্রিপ্টে এটি করতে পছন্দ করেন:

$(selector).attr('inputmode', 'none');

আমি এটির ব্যাপকভাবে পরীক্ষা করিনি, তবে এটি আমি যে Android অ্যান্ড্রয়েড সেটআপগুলির সাথে ব্যবহার করেছি সেগুলিতে এটি ভালভাবে কাজ করছে।


আমি বেশিরভাগ মোবাইল অ্যান্ড্রয়েডের জন্য এই প্রকল্পটি কোডিং করছি। অন্যান্য প্ল্যাটফর্মগুলির সাথে Ymmv।
পিটার বোয়ার্স

-1

অথবা আপনি উদাহরণস্বরূপ, মানটি সংরক্ষণ করার জন্য একটি লুকানো ক্ষেত্র ব্যবহার করতে পারেন ...

        <asp:HiddenField ID="hfDay" runat="server" />

এবং $ ("# my_txtbox") এ। ডেটপিকার ({বিকল্পগুলি:

        onSelect: function (dateText, inst) {
            $("#<% =hfDay.ClientID %>").val(dateText);
        }

-1

আপনি যদি ব্যবহারকারীকে ডেটপিকার থেকে একটি তারিখ চয়ন করতে চান তবে আপনি ব্যবহারকারীকে টেক্সটবক্সের মধ্যে টাইপ করতে চান না তবে নীচের কোডটি ব্যবহার করুন:

<script type="text/javascript">
$(function () {
    $("#datepicker").datepicker({ maxDate: "-1D" }).attr('readonly', 'readonly');
    $("#datepicker").readonlyDatepicker(true);

});

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