কীভাবে jquery ব্যবহার করে পঠনযোগ্যভাবে ড্রপডাউন করবেন?


96

আমি নীচের বিবৃতিটি এটি পাঠযোগ্যভাবে তৈরি করতে ব্যবহার করছি তবে এটি কার্যকর হচ্ছে না not

$('#cf_1268591').attr("readonly", "readonly"); 

আমি এটিকে অক্ষম করতে চাই না, আমি এটি কেবল পঠন করতে চাই।


4
কেবল পঠনযোগ্য ড্রপডাউন এবং একটি স্ট্যান্ডার্ড ড্রপডাউন মধ্যে পার্থক্য কী হবে?
লিও


এটি কি আসলেই একটি jQuery সমস্যা? অথবা হতে পারে ড্রপডাউন কেবল পঠনযোগ্য গুণাবলী দিয়ে কাজ করে না?
ইলিয়া জি

কনিষ্ক পানামালদিনিয়া ইতিমধ্যে আপনাকে সঠিক উত্তর দিয়েছেন (কোনও মন্তব্যের পরিবর্তে এটি উত্তর দেওয়া উচিত)।
কিবানটেক

4
ড্রপডাউন সর্বদা পঠনযোগ্য নয়। কেবলমাত্র পঠনের অর্থ আপনি এর মান দেখতে পাচ্ছেন তবে এটি পরিবর্তন করতে পারবেন না।
সানকাট 2000

উত্তর:


189
$('#cf_1268591').attr("disabled", true); 

ড্রপ ডাউন সবসময় কেবল পঠিত হয়। আপনি যা করতে পারেন তা এটি অক্ষম করে দেওয়া

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


28
ড্রপডাউন অক্ষম করা জমা দেয় না। আমি আপনার সমাধান চেষ্টা করব।
করিম আলী

4
একটি নির্বাচন (ড্রপ-ডাউন) অক্ষম করার ক্ষেত্রে একটি সমস্যা হ'ল কিছু ব্রাউজারে (যেমন IE9) ফোকাস হারিয়ে যায়। একটি অজ্যাক্স কল প্রক্রিয়াকরণের সময় নির্বাচিত উপাদানটি অক্ষম করা থাকলে এটি কোনও সমস্যা হতে পারে, উদাহরণস্বরূপ, ফর্মটিতে ব্যবহারকারীর অবস্থানটি হারিয়ে যাওয়ার কারণে।
ক্রিস

4
আপনার পরামর্শের জন্য ধন্যবাদ. যদিও শুধু একটি প্রশ্ন; আমি কীভাবে একটি লুকানো ক্ষেত্রে ড্রপ ডাউন মান সংরক্ষণ করব? আপনি কি এর জন্য কিছু উদাহরণ কোড পাবেন?
kramer65

4
আর একটি "workaround" ফর্ম জমা দেওয়ার আগে সেই ক্ষেত্রগুলিকে সক্ষম করা হবে। অথবা আমার ক্ষেত্রে যেখানে আমি JSON ফর্ম্যাটে ডেটা প্রেরণ করেছি (সক্ষম করুন, ডেটা পান, আবার অক্ষম করুন): var অক্ষম = $ (আপনার সংস্করণ) .ফাইন্ড (': ইনপুট: অক্ষম') remove সরানোআউট ('অক্ষম'); var ডেটা = getFormJSONData (your (আপনার রূপ)); अक्षम.attr ('অক্ষম', 'অক্ষম');
কেডিটি

4
আপনার prop()এখন ব্যবহার করা উচিত ।
অ্যালেক্স

149

আমার একই সমস্যা ছিল, আমার সমাধানটি ছিল বাছাই না করা সমস্ত বিকল্প অক্ষম করা। JQuery সহ খুব সহজ:

$('option:not(:selected)').attr('disabled', true);

সম্পাদনা => একই পৃষ্ঠায় যদি আপনার একাধিক ড্রপডাউন থাকে তবে নীচের মতো নির্বাচন-আইডিতে নির্বাচিত সমস্ত অপশন অক্ষম করুন।

$('#select_field_id option:not(:selected)').attr('disabled', true);

27
ভালো বুদ্ধি! JQuery এর বর্তমান সংস্করণগুলির সাথে সর্বোত্তম অনুশীলনগুলি ব্যবহার করতে, আমি অক্ষম মান সেট করতে প্রপ পদ্ধতিটি ব্যবহার করব। অর্থাত্$('option:not(:selected)').prop('disabled', true);
ক্রিস ও'কনেল

এটি একটি খুব মজার সমাধান!
জ্যাকস

4
হ্যাঁ! ভালো বুদ্ধি.
এরিক

4
এটি উত্তর n ° 1 হওয়া উচিত।
এরওয়ান ক্লিগের্টজ

24

এটি আপনি যা খুঁজছেন:

$('#cf_1268591').attr("style", "pointer-events: none;");

একটি যাদুমন্ত্র মত কাজ করে.


4
দুর্দান্ত উত্তর তবে সাবধান থাকুন এটি এখনও নির্বাচনগুলিকে ট্যাবড করতে দেয়। আপনাকেtabindex="-1"
uesports135

গ্রেট ম্যান, আমার এটি দরকার, কারণ আপনার উত্তরের জন্য মডেলকে ধন্যবাদ দিয়ে অক্ষম করা হয়েছে।
সিনা_ইস্লাম

23

এটি ব্যবহার করে দেখুন .. নির্বাচিত মানটি অক্ষম না করে ..

$('#cf_1268591 option:not(:selected)').prop('disabled', true);

এটা আমার জন্য কাজ করে..


4
আপনার উত্তর হিসাবে একই লাইনের পাশাপাশি আমি অন্যান্য বিকল্পগুলি অপসারণ করেছি '(' # cf_1268591 বিকল্প: নয় (: নির্বাচিত) ')) সরান ();
শেঠ শীতকাল

14

সাথে একটি উপাদান সেট করা disabledডেটা জমা দেবে না, তবে selectউপাদানগুলির মধ্যে নেই readonly

আপনি একটি সিমুলেট করতে readonlyউপর selectstyling এবং জাতীয় ট্যাব সঙ্গে পরিবর্তন রোধ করার জন্য জন্য CSS ব্যবহার করছে:

select[readonly] {
  background: #eee;
  pointer-events: none;
  touch-action: none;
}

তারপরে এটি ব্যবহার করুন:

var readonly_select = $('select');
$(readonly_select).attr('readonly', true).attr('data-original-value', $(readonly_select).val()).on('change', function(i) {
    $(i.target).val($(this).attr('data-original-value'));
});

ফলাফল:


4
খুব শীতল পদ্ধতি, তবে ব্যবহারকারী কোনও মান নির্বাচন করতে কীবোর্ডে TAB ব্যবহার করতে পারেন।
রিকার্ডো মার্টিনস

4
@ রিকার্ডোমার্টিনস ধন্যবাদ জানিয়েছে, ট্যাবের সাথে পরিবর্তন রোধ করার জন্য উত্তরটি আপডেট করেছে
লুকাস বুস্তামন্তে

13

আমি ক্ষেত্রটি অক্ষম করতাম। তারপরে, ফর্মটি জমা দেওয়ার সময়, এটি অক্ষম না করে রাখুন। আমার মতে, লুকানো ক্ষেত্রগুলির সাথে ডিল করার চেয়ে এটি সহজ।

//disable the field
$("#myFieldID").prop( "disabled", true );           

//right before the form submits, we re-enable the fields, to make them submit.
$( "#myFormID" ).submit(function( event ) {
    $("#myFieldID").prop( "disabled", false );
});     


6

জিনিসগুলিকে সরল করতে এখানে jQuery প্লাগইন যা ঝামেলা ছাড়াই করে: https://github.com/haggen/readonly


কোডের দুর্দান্ত (ক্ষুদ্র) স্নিপেট, ধন্যবাদ। এটি ড্রপডাউনগুলি অক্ষম করে যাতে তাদের পরিবর্তন করা যায় না তবে তাদের মানগুলি জমা দেওয়ার অনুমতি দেয়। খুব দরকারী.
অ্যালেক্স হপকিন্স 13

3

এই লাইনটি readonlyকেবল পঠনযোগ্য গুণাবলী দিয়ে নির্বাচন করে :

$('select[readonly=readonly] option:not(:selected)').prop('disabled', true);

2

এই কোডটি প্রতিটি ড্রপডাউনতে প্রথমে মূল নির্বাচন সংরক্ষণ করবে। তারপরে যদি ব্যবহারকারী নির্বাচনটি পরিবর্তন করে তবে এটি ড্রপডাউনটিকে তার আসল নির্বাচনে পুনরায় সেট করবে।

http://jsfiddle.net/4aHcD/22/

//store the original selection
$("select :selected").each(function(){
    $(this).parent().data("default", this);
});

//change the selction back to the original
$("select").change(function(e) {
    $($(this).data("default")).prop("selected", true);
});

2

এটা খুব ভাল কাজ

$('#cf_1268591 option:not(:selected)').prop('disabled', true);

এর সাহায্যে আমি বিকল্পগুলি দেখতে পাচ্ছি তবে আমি এটি নির্বাচন করতে পারি না


2

আমার পক্ষে সহজ বিকল্পটি ছিল পঠনযোগ্য হিসাবে নির্বাচন করা এবং যুক্ত করা:

onmousedown="return false" onkeydown="return false"

আপনার কোনও অতিরিক্ত যুক্তি লেখার দরকার নেই। কোনও লুকানো ইনপুট বা অক্ষম নেই এবং তারপরে ফর্ম জমা দিতে পুনরায় সক্রিয় করা হবে।


1

এটি একটি পুরানো নিবন্ধ, তবে আমি যারা খুঁজে পাবে তাদের সতর্ক করতে চাই। নাম অনুসারে উপাদান পেয়ে অক্ষম বৈশিষ্ট্যের সাথে সাবধান হন। আশ্চর্যজনক তবে এটি খুব বেশি কাজ করে না বলে মনে হচ্ছে।

এটি কাজ করে না:

<script language="JavaScript">
function onChangeFullpageCheckbox() {    
$('name=img_size').attr("disabled",$("#fullpage").attr("checked"));
</script>

এই কাজ:

<script language="JavaScript">
function onChangeFullpageCheckbox() {    
$('#img_size').attr("disabled",$("#fullpage").attr("checked"));
</script>

হ্যাঁ, আমি জানি যে আমার আরও ভালভাবে প্রপ ব্যবহার করা উচিত এবং এটির নয়, তবে কমপক্ষে এখন প্রসেসটি জেকুরির পুরানো সংস্করণের কারণে কাজ করবে না, এবং এখন আমি এটি আপডেট করতে পারছি না, কেন তা জিজ্ঞাসা করবেন না ... এইচটিএমএল পার্থক্য কেবল যুক্ত করা হয়েছে আইডি:। ..

<select name="img_size" class="dropDown" id="img_size">
<option value="200">200px
</option><option value="300">300px
</option><option value="400">400px
</option><option value="500">500px
</option><option value="600" selected="">600px
</option><option value="800">800px
</option><option value="900">900px
</option><option value="1024">1024px
</option></select>

<input type="checkbox" name="fullpage" id="fullpage" onChange="onChangeFullpageCheckbox()" />

...

আমি স্ক্রিপ্টে কোনও ত্রুটি খুঁজে পাইনি, এবং নাম সহ সংস্করণে, কনসোলে কোনও ত্রুটি ছিল না। তবে অবশ্যই কোডে আমার ভুল হতে পারে

এতে দেখা গেছে: উইন 7 প্রো-তে ক্রোম 26

খারাপ ব্যাকরণের জন্য দুঃখিত।


1

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

এটি পিছনে সামঞ্জস্যের সাথে কিছু সমস্যা রয়েছে তা নিশ্চিত, তবে আমার মতে বিরক্তিকর অক্ষম / পঠনযোগ্য ইস্যুটি পাওয়ার চেয়ে ভাল বিকল্প।


এটি করার জন্য প্রয়োজনীয় সিএসএসের বিবরণ দিতে পারেন?
কোকোয়াল্লা

1

আপনি এটি অক্ষম করতে এবং এই মুহুর্তে আপনি জমা কলটি সক্ষম করে it আমি মনে করি সবচেয়ে সহজ উপায় :)


0

কেবল পঠনযোগ্য ড্রপ-ডাউনের মতো জিনিস নেই। আপনি যা করতে পারেন তা হ'ল প্রতিটি পরিবর্তনের পরে ম্যানুয়ালি প্রথম মানটিতে এটি পুনরায় সেট করা।

$("select").change(function(event) {
    $(this).val($(this).find("option").first().val());
});

http://jsfiddle.net/4aHcD/


4
যদি বর্তমানে নির্বাচিত বিকল্পটি উদাহরণের তালিকায় প্রথমে না হয় তবে ভাল নয়: jsfiddle.net/4aHcD/19
হোমার

@ হোমার, কোডটি কোনও পরিবর্তনের পরে এটি পুনরায় সেট করার উদ্দেশ্যে করা হয়েছে, এবং এটি সে ক্ষেত্রে কার্যকর হয়। আপনি যদি কোনও কারণে প্রাথমিক মানটি পরিবর্তনের পরিবর্তে এটি প্রাথমিকভাবে চালিত করতে চান তবে আপনি jsfiddle.net/4aHcD/20 এর$("select").change() মতো ব্যবহার করে ইভেন্টটি ঘোষণার পরে সর্বদা আপনার উপাদানটিতে পরিবর্তন ইভেন্টটি কল করতে পারেন
অ্যালেক্স টারপিন

4
পৃষ্ঠাটি প্রথম লোড হওয়ার পরে, যদি তৃতীয় আইটেমটি নির্বাচিত হয় এবং ব্যবহারকারী এটি দ্বিতীয় আইটেমে পরিবর্তন করার চেষ্টা করে, আপনার কোডটি প্রথম আইটেমটিতে নির্বাচন পরিবর্তন করে। আমার মনে হয় না এটি করা উচিত নয়। আমি ওপি কী চাইছিলাম তার একটি উদাহরণ এখানে দেওয়া হয়েছে, এমন একটি ড্রপডাউন যা ব্যবহারকারীর মিথস্ক্রিয়ার ভিত্তিতে এর নির্বাচিত মানকে পরিবর্তন করবে না: jsfiddle.net/4aHcD/22
হোমার

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

0

"কীপ্রেস আপ" থাকাকালীন খালি স্ট্রিং তৈরি করার চেষ্টা করুন

এইচটিএমএল হ'ল:

<input id="cf_1268591" style="width:60px;line-height:16px;border:1px solid #ccc">

জ্যাকুরি হ'ল:

$("#cf_1268591").combobox({
  url:"your url",
  valueField:"id",
  textField:"text",
  panelWidth: "350",
  panelHeight: "200",
});

// খালি স্ট্রিং সহ কীআপের পরে তৈরি করুন

var tb = $("#cf_1268591").combobox("textbox");
  tb.bind("keyup",function(e){
  this.value = "";
});

0

হয়তো আপনি এইভাবে চেষ্টা করতে পারেন

function myFunction()
{
   $("select[id^=myID]").attr("disabled", true);
   var txtSelect = $("select[id^=myID] option[selected]").text();
}

এটি ড্রপ-ডাউনের প্রথম মানটি ডিফল্ট হিসাবে সেট করে এবং এটি কেবল পঠনযোগ্য বলে মনে হয়



0

অক্ষম ব্যবহারের পরামর্শ দেয় এমন অন্যান্য জবাবগুলিতে এখানে সামান্য প্রকরণ রয়েছে। যেহেতু "অক্ষম" বৈশিষ্ট্যটির কোনও মান থাকতে পারে এবং এখনও অক্ষম করা যায়, আপনি অক্ষম = "পঠনযোগ্য" এর মতো এটি কেবল পঠনযোগ্যতে সেট করতে পারেন। এটি নিয়ন্ত্রণটি যথারীতি অক্ষম করবে এবং সিএসএসের মতো নিয়মিত অক্ষম নিয়ন্ত্রণগুলির চেয়ে সহজেই এটি আলাদাভাবে স্টাইল করতে দেয়:

select[disabled=readonly] {
    .... styles you like for read-only
}

আপনি যদি ডেটা জমা অন্তর্ভুক্ত করতে চান তবে অন্যান্য উত্তরের বিবরণ হিসাবে গোপন ক্ষেত্রগুলি ব্যবহার করুন বা জমা দেওয়ার আগে সক্ষম করুন।


0

@ কনিষ্ক যেমন বলেছিলেন, আমরা যদি কোনও ফর্ম উপাদান অক্ষম করি তবে তা জমা দেওয়া হবে না। আমি এই সমস্যার জন্য একটি স্নিপেট তৈরি করেছি। যখন নির্বাচন উপাদানটি অক্ষম থাকে তখন এটি একটি লুকানো ইনপুট ক্ষেত্র তৈরি করে এবং মানটি সঞ্চয় করে। এটি সক্ষম করা হলে এটি তৈরি করা লুকানো ইনপুট ক্ষেত্রগুলি মুছে দেয়।

অধিক তথ্য

jQuery(document).ready(function($) {
  var $dropDown = $('#my-select'),
    name = $dropDown.prop('name'),
    $form = $dropDown.parent('form');

  $dropDown.data('original-name', name); //store the name in the data attribute 

  $('#toggle').on('click', function(event) {
    if ($dropDown.is('.disabled')) {
      //enable it 
      $form.find('input[type="hidden"][name=' + name + ']').remove(); // remove the hidden fields if any
      $dropDown.removeClass('disabled') //remove disable class 
        .prop({
          name: name,
          disabled: false
        }); //restore the name and enable 
    } else {
      //disable it 
      var $hiddenInput = $('<input/>', {
        type: 'hidden',
        name: name,
        value: $dropDown.val()
      });
      $form.append($hiddenInput); //append the hidden field with same name and value from the dropdown field 
      $dropDown.addClass('disabled') //disable class
        .prop({
          'name': name + "_1",
          disabled: true
        }); //change name and disbale 
    }
  });
});
/*Optional*/

select.disabled {
  color: graytext;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form action="#" name="my-form">
  <select id="my-select" name="alpha">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
  </select>
</form>
<br/>
<button id="toggle">toggle enable/disable</button>

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