আমি কীভাবে এএসপি.নেট এমভিসিতে অক্ষম ইনপুট জমা দেব?
আমি কীভাবে এএসপি.নেট এমভিসিতে অক্ষম ইনপুট জমা দেব?
উত্তর:
আপনি কি মাঠের readonly="readonly"পরিবর্তে তৈরি করতে পারবেন না disabled="disabled"? ব্যবহারকারীর দ্বারা অ-সম্পাদনযোগ্য থাকা অবস্থায় একটি পঠনযোগ্য ক্ষেত্রের মান সার্ভারে জমা দেওয়া হবে। একটি SELECTট্যাগ যদিও ব্যতিক্রম।
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>কীভাবে এটিকে ধূসর করে তুলতে পারি তা দৃশ্যত দেখে মনে হয় এটি সম্পাদনাযোগ্য নয়। এখনো ভালো আমরা LabelFor অনুরূপ কিছু ব্যবহার করতে পারেন, আমি LabelFor চেষ্টা করেছিলেন কিন্তু এটি শুধুমাত্র প্রদর্শন নাম পায় ....
type="checkbox"ইনপুটগুলির জন্যও কাজ করে না
সবাইকে ধন্যবাদ:
আমি যেভাবে এটি সমাধান করেছি:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
বিঃদ্রঃ:
উত্তরে আমি এই তথ্য পেয়েছি তবে আমি সম্পাদিত হয়েছি।
textBox.Attributes.Add("readonly", "readonly");এবং ব্যাখ্যাটি লিঙ্কটিতে রয়েছে
$("#textBoxId").css("color", "#c0c0c0")।
@ পিপমকিন এই উত্তরে তার মন্তব্যে এটি উল্লেখ করেছেন তবে আমি প্রতিবন্ধী থেকে ডেটা জমা দেওয়ার অন্যান্য সংস্থান খুঁজে পেতে না পারায় আমি এটি হাইলাইট করতে চেয়েছিলাম <select>। আমি এটিও বিশ্বাস করি যে এটি প্রশ্নের সাথে প্রাসঙ্গিক কারণ নির্বাচনগুলি <input>গুলি নয় তবে তারা "ইনপুট" গুলি।
কেবলমাত্র অক্ষম নির্বাচন এবং এটির জন্য বাছাই করা একটি লুকানো ক্ষেত্র অন্তর্ভুক্ত করুন।
উদাহরণ:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
সাবধানতা: এটি একই আইডির সাথে পৃষ্ঠায় দুটি ট্যাগ লাগিয়ে দেবে যা সত্যিকারেরভাবে বৈধ এইচটিএমএল নয় এবং জাভাস্ক্রিপ্ট সহ মাথাব্যথার কারণ হতে পারে। আমার জন্য, এটির এইচটিএমএল দ্বারা ড্রপডাউনটির মান নির্ধারণ করার জন্য আমার কাছে জাভাস্ক্রিপ্ট রয়েছে idএবং আপনি যদি লুকানো ক্ষেত্রটি প্রথমে রাখেন তবে জাভাস্ক্রিপ্টটি এটির পরিবর্তে সন্ধান করবে select।
সাধারণত, আমার যদি এমন একটি ক্ষেত্র থাকে যা "কেবল পঠনযোগ্য" তবে সার্ভারে আবার জমা দেওয়ার দরকার হয়, আমি প্রদর্শনটি অক্ষম করব (বা কেবল পাঠ্য), তবে তার পরে একই নামের সাথে একটি লুকানো ক্ষেত্র যুক্ত করব। আপনাকে এখনও নিশ্চিত করতে হবে যে ক্ষেত্রটি আসলে সার্ভার-সাইডে পরিবর্তিত হয়নি - কেবল আপনার ক্রিয়াকলাপের মডেল থেকে এটি আপডেট করবেন না - তবে ত্রুটি থাকলে মডেল রাষ্ট্রটি এখনও সঠিক হবে accurate
ফর্মটি জমা দেওয়ার আগে আপনি এই জাতীয় কোড ব্যবহার করতে পারেন:
$(":disabled", $('#frmMain')).removeAttr("disabled");
Ajax.BeginForm?
ডিজাইন দ্বারা ব্রাউজারগুলি এটি সমর্থন করে না।
হয় সেগুলিতে তৈরি করুন readonlyযা সার্ভারে মান জমা দেওয়ার অনুমতি দেয় বা যদি আপনি এমন নিয়ন্ত্রণগুলি নিয়ে কাজ করছেন যেগুলি এখনও readonlyনির্বাচন করুন, সিএসএস শৈলীর মতো বৈশিষ্ট্যের সাথে ব্যবহারযোগ্য arepointer-events: none; যাতে সেগুলি অ-ইন্টারেক্টিভ করে তোলে
হ্যাক ধরনের, কিন্তু কাজ করে! আপনি যখন জাভাস্ক্রিপ্ট ব্যবহার না করে সরাসরি জমা বোতামের সাথে ফর্ম জমা দিচ্ছেন তখন এটিও কাজ করে। কোন অতিরিক্ত কাজের প্রয়োজন!
উদাহরণ:
<select asp-for="TypeId"
asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
class="form-control form-control-sm"
readonly
style="pointer-events: none;">
</select>
যখন আমরা অক্ষম কিন্তু চেকবক্সবক্সগুলি নিয়ে কাজ করি এবং আমরা মানটি পোস্ট করতে চাই, আমাদের নিশ্চিত করা দরকার যে আমাদের লুকানো ক্ষেত্রটি @ এইচটিএমএল.চেকবক্সের জন্য লুকানো ক্ষেত্রের আগে উপস্থিত হবে।
নীচের লিঙ্কটি আমি উত্তর পেয়েছি যেখানে থেকে। http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
তাসোস (": অক্ষম", $ ('# এক্সএক্সএক্সএক্সফর্ম') প্রসারণ করা হচ্ছে। অপসারণ ("অক্ষম"); তুমি ব্যবহার করতে পার:
$("#xxxForm").submit(function (e) {
e.preventDefault();
var form = this;
$('#Field1')[0].disabled = false;
$('#Field2')[0].disabled = false;
...
$('#FieldN')[0].disabled = false;
form.submit(); // submit bypassing the jQuery bound event
});
এটি ASP.net এ মডেল মানগুলি জমা দিতে সহায়তা করবে:
$("#iD").attr("style", "pointer-events: none;background-color:rgb(220,220,220)");
আমি সাধারণত চেকবক্স বা চেকবক্সফোরের জন্য এইভাবে ব্যবহার করি কারণ এটিকে অক্ষম করা মানটি হারাতে বাধ্য করে। পঠনযোগ্য চেকবক্সেও কাজ করে না।
@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)
আপনার পৃষ্ঠায় এই স্ক্রিপ্টটি @ সেকশন স্ক্রিপ্টগুলিতে রেখে দিন। আপনি পৃষ্ঠাটি জমা দেওয়ার সময় এটি ইনপুটগুলিকে সক্ষম করবে এবং আপনার জমা দেওয়ার পরে ব্যবহারকারীকে অন্য পৃষ্ঠায় পুনর্নির্দেশ করা উচিত।
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js">
$("form").submit(function () {
if ($('form').valid()) {
$("input").removeAttr("disabled");
}
});
</script>