অক্ষম ফর্ম ইনপুটগুলি অনুরোধটিতে উপস্থিত হয় না


339

আমার একটি ফর্মের কিছু অক্ষম ইনপুট রয়েছে এবং আমি সেগুলি একটি সার্ভারে প্রেরণ করতে চাই, তবে ক্রোম তাদের অনুরোধ থেকে বাদ দেয়।

এটির জন্য কোনও লুকানো ক্ষেত্র যুক্ত না করে কি কোনও কর্মপরিকল্পনা রয়েছে?

<form action="/Media/Add">
    <input type="hidden" name="Id" value="123" />

    <!-- this does not appear in request -->
    <input type="textbox" name="Percentage" value="100" disabled="disabled" /> 

</form>


2
@ লিয়াম এটি নিম্ন মানের উত্তর সহ কম উপস্থিত প্রশ্নের পক্ষে যাওয়ার বন্ধ করার খুব আশ্চর্যজনক প্রচেষ্টা।
হাজ্জিক

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

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

আমি কয়েক ঘন্টা এটি সমাধানের চেষ্টা করার পরে এখানে এসেছি। এহহ ..
ম্যাচিকিউক

উত্তর:


728

disabledবৈশিষ্ট্যযুক্ত উপাদানগুলি জমা দেওয়া হয় না বা আপনি বলতে পারেন যে তাদের মানগুলি পোস্ট করা হয়নি ( ফর্ম ডেটা সেট তৈরির জন্য এইচটিএমএল 5 টিপিতে ধাপ 3 এর অধীনে দ্বিতীয় বুলেট পয়েন্টটি দেখুন )।

অর্থাত,

<input type="textbox" name="Percentage" value="100" disabled="disabled" /> 

এফটিআইআই , এইচটিএমএল 4 স্পেসে প্রতি 17.12.1 প্রতি :

  1. অক্ষম নিয়ন্ত্রণগুলি ফোকাস গ্রহণ করে না।
  2. নিষ্ক্রিয় নিয়ন্ত্রণগুলি ট্যাবিং নেভিগেশনে এড়িয়ে যায়।
  3. অক্ষম নিয়ন্ত্রণগুলি সফলভাবে পোস্ট করা যায় না।

আপনি readonlyআপনার ক্ষেত্রে অ্যাট্রিবিউট ব্যবহার করতে পারেন , এটি করে আপনি আপনার ক্ষেত্রের ডেটা পোস্ট করতে সক্ষম হবেন।

অর্থাত,

<input type="textbox" name="Percentage" value="100" readonly="readonly" />

এফটিআইআই , এইচটিএমএল 4 স্পেসে প্রতি 17.12.2 প্রতি :

  1. কেবল পঠনযোগ্য উপাদানগুলি ফোকাস গ্রহণ করে তবে ব্যবহারকারীর দ্বারা পরিবর্তন করা যায় না।
  2. কেবল পঠনযোগ্য উপাদানগুলি ট্যাবিং নেভিগেশনে অন্তর্ভুক্ত রয়েছে।
  3. কেবলমাত্র পঠনযোগ্য উপাদান সফলভাবে পোস্ট করা হয়েছে।

8
আমার নিজের প্রশ্নের জবাব দিতে: না, রেডনি কেবলমাত্র = ইনপুট /> ফর্ম নিয়ন্ত্রণের ধরন = 'পাঠ্য' এবং টাইপ = 'পাসওয়ার্ড' এবং <টেক্সারিয়া /> এর জন্য কাজ করে। কেবল পাঠ্য যা করে তা হ'ল ব্যবহারকারীকে নিয়ন্ত্রণের মান পরিবর্তন করতে বাধা দেয়। ব্যবহারকারীর একটি চেকবক্সের মান পরিবর্তন করতে বাধা (বা টাইপ রেডিওর ইনপুট) তেমন কোনও তাত্পর্যপূর্ণ নয় ...
মুলস্কিনার

3
@ danielson317 আপনি নির্বাচিত উপাদানটিকে "অক্ষম" রাখতে পারেন তবে একই মান সহ আরও একটি লুকানো ইনপুট যুক্ত করতে পারেন।
আলফামেল 5'15

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

2
আপনি কি কখনও কোনও সন্ধান পেয়েছেন এবং ভাবেন, "কী হ্যাকের ফলে তাদের মনে হয়েছে যে এটি স্পষ্ট হবে?" যদি আমি কোনও ইনপুট ক্ষেত্রটি অন্তর্ভুক্ত করতে পারি যা অক্ষম থাকতে পারে বা নাও করতে পারে, তার অর্থ আমি ব্যবহারকারীকে এটি পরিবর্তন করতে চাই না, এটি কার্যকরভাবে এমনভাবে কাজ করা উচিত নয় যেন এটি কখনই ঘোষণা করা হয়নি!
নিক বেডফোর্ড

1
ধন্যবাদ এটি সাহায্যকারী এবং উত্তর এবং প্রতিক্রিয়া উভয়ই ছিল।
ব্যবহারকারী 1449249

25

জ্যাকুরি ব্যবহার করে এবং এজ্যাক্স সহ ডেটা প্রেরণ করে আপনি আপনার সমস্যার সমাধান করতে পারেন:

<script>

$('#form_id').submit(function() {
    $("#input_disabled_id").prop('disabled', false);

    //Rest of code
    })
</script>

এই সমাধান সম্পর্কে ভাল +1 হ'ল ইনপুটটি ব্যবহার করার সময় আপনি এখনও লাল অক্ষম আইকনটি ব্যবহার করতে পারেন =)
JMASTER বি

5
@ অরিয়েলমাদুরো আপনি সিএসএসের সাহায্যে এটি করতে পারেনcursor:not-allowed;
34

@ কৌশলগুলি ওহ সত্যই ?? আপনি একটি উদাহরণ প্রদান করতে পারেন?
JMASTER বি

এই সমাধানটি কেবল পঠনযোগ্য ব্যবহারের চেয়ে বেশি পছন্দ করুন, কারণ অক্ষম ক্ষেত্রগুলি ফোকাস নিতে পারে না
আন্দ্রেয়াস

9

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

<form onsubmit="this.querySelectorAll('input').forEach(i => i.disabled = false)">
    <!-- Re-enable all input elements on submit so they are all posted, 
         even if currently disabled. -->

    <!-- form content with input elements -->
</form>

আপনি যদি jQuery পছন্দ করেন:

<form onsubmit="$(this).find('input').prop('disabled', false)">
    <!-- Re-enable all input elements on submit so they are all posted, 
         even if currently disabled. -->

    <!-- form content with input elements -->
</form>

এএসপি.নেট এমভিসি সি # রেজারের জন্য, আপনি সাবমিট হ্যান্ডলারটি এভাবে যুক্ত করুন:

using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post,
    // Re-enable all input elements on submit so they are all posted, even if currently disabled.
    new { onsubmit = "this.querySelectorAll('input').forEach(i => i.disabled = false)" } ))
{
    <!-- form content with input elements -->
}

jquery বিকল্পে উদ্ধৃতিগুলির একটি অনুপস্থিত রয়েছে
cagcak

8

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


1
এই সমাধানটি আইভিকেও খুব ব্যবহার করা হচ্ছে - তবে আমি যেমনটি শিখেছি - কেবলমাত্র পঠনযোগ্য সম্পত্তিই আরও ভাল সমাধান
মুলেসকিনার

4

আমি এই উত্তরটি আপডেট করছি যেহেতু খুব দরকারী। ইনপুটটিতে কেবল পঠনযোগ্য যুক্ত করুন।

সুতরাং ফর্মটি হবে:

<form action="/Media/Add">
    <input type="hidden" name="Id" value="123" />
    <input type="textbox" name="Percentage" value="100" readonly/>
</form>

4

শব্দার্থগতভাবে এটি সঠিক আচরণের মতো অনুভব করে

আমি নিজেকে জিজ্ঞাসা করব " কেন আমাকে এই মানটি জমা দেওয়ার দরকার? "

যদি আপনার কোনও ফর্মটিতে অক্ষম ইনপুট থাকে, তবে সম্ভবত আপনি ব্যবহারকারীটি সরাসরি মান পরিবর্তন করতে চান না

অক্ষম ইনপুটটিতে প্রদর্শিত কোনও মানই হয়

  1. সার্ভারের একটি মান থেকে আউটপুট যা ফর্ম উত্পাদন করে, বা
  2. যদি ফর্মটি গতিশীল হয় তবে ফর্মের অন্যান্য ইনপুট থেকে গণনাযোগ্য হোন

ধরে নিই যে ফর্মটি প্রসেসিং করা সার্ভারটি এটি পরিবেশন করা সার্ভারের মতোই, অক্ষম ইনপুটগুলির মানগুলি পুনরুত্পাদন করার সমস্ত তথ্য প্রসেসিংয়ে পাওয়া উচিত

প্রকৃতপক্ষে, ডেটা অখণ্ডতা রক্ষার জন্য - এমনকি যদি অক্ষম ইনপুটটির মান প্রসেসিং সার্ভারে প্রেরণ করা হয় তবে আপনার সত্যিকার অর্থে এটি যাচাই করা উচিত। এই যাচাইকরণের জন্য একই স্তরের তথ্যের প্রয়োজন হবে আপনার যেভাবেই মানগুলি পুনরুত্পাদন করতে হবে!

আমি প্রায় যুক্তি দিয়েছিলাম যে কেবল পঠনযোগ্য ইনপুটগুলি অনুরোধের মাধ্যমে প্রেরণ করা উচিত নয়

সংশোধন করার জন্য খুশি, তবে কেবলমাত্র পাঠযোগ্য / অক্ষম ইনপুটগুলি জমা দেওয়ার দরকার রয়েছে এমন সমস্ত ব্যবহারের ক্ষেত্রে আমি ভাবতে পারি যে কেবল ছদ্মবেশে কেবল স্টাইলিং ইস্যু রয়েছে are


1
এটি ভুলে যাবেন না যে ক্রোম বিকাশকারী সরঞ্জামগুলির সাথে এর মানটি সরাসরি
চালিত

2

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

<input readonly style="color: Grey; opacity: 1; ">

-6

আপনি সম্পূর্ণরূপে অক্ষম করা এড়াতে পারবেন, এটি বেদনাদায়ক যেহেতু এইচটিএমএল ফর্ম ফর্ম্যাট সম্পর্কিত <p>বা অন্য কোনও লেবেল সম্পর্কিত কিছু প্রেরণ করবে না ।

সুতরাং আপনি পরিবর্তে নিয়মিত রাখতে পারেন

<input text tag just before you have `/>

এটি যোগ করুন readonly="readonly"

এটি আপনার পাঠ্যটি অক্ষম করবে না তবে ব্যবহারকারীর দ্বারা পরিবর্তন হবে না যাতে এটি কাজ করে <p>এবং ফর্মের মাধ্যমে মান প্রেরণ করে। আপনি যদি এটিকে <p>ট্যাগের মতো আরও তৈরি করতে চান তবে সীমাটি সরান

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