কীভাবে ইনপুট ক্ষেত্রগুলি প্রদর্শন দ্বারা লুকানো রয়েছে তা পাঠানো এড়াতে হবে: কোনও সার্ভারে নেই?


89

আপনার এমন একটি ফর্ম রয়েছে যা আপনি বেশ কয়েকটি ক্ষেত্রের দৃশ্যমানতা স্যুইচ করুন Ima এবং ক্ষেত্রটি প্রদর্শিত না হলে আপনি এর মান অনুরোধে রাখতে চান না।

আপনি কিভাবে এই পরিস্থিতি হ্যান্ডেল করবেন?

উত্তর:


129

কোনও ফর্ম উপাদানকে অক্ষম করে সেট করা এটি সার্ভারে যাওয়া বন্ধ করবে, যেমন:

<input disabled="disabled" type="text" name="test"/>

জাভাস্ক্রিপ্টে এর অর্থ এইরকম কিছু হবে:

var inputs = document.getElementsByTagName('input');
for(var i = 0;i < inputs.length; i++) {
    if(inputs[i].style.display == 'none') {
        inputs[i].disabled = true;
    }
}
document.forms[0].submit();

JQuery এ:

   $('form > input:hidden').attr("disabled",true);
   $('form').submit();

16
আপনার :inputপরিবর্তে jQuery এর সিউডো সিলেক্টর সহ inputআপনি সহজেই সমস্ত selectএবং textareaউপাদানগুলি অক্ষম করতে পারবেন
ড্যানিয়েল রিকোভস্কি

8
JQuery> = 1.6 এর পরিবর্তে attr("disabled", true)আপনার উচিত prop("disabled", true) api.jquery.com/prop
ইয়র্ক

4
@ ডেমোকিকব্রি 7 - jQuery 1.6 হিসাবে, এর .prop()পরিবর্তে ব্যবহার করা .attr()অক্ষম এবং চেক করা উভয় বৈশিষ্ট্য অর্জন এবং সেট করার জন্য সুপারিশ করা হয়। .attr()উইল ব্যবহার করে চেক করা বা সেট করা কিছু ক্ষেত্রে অনাকাঙ্ক্ষিত ফলাফল দেয়। ইওর্চ কী উল্লেখ করছে সে সম্পর্কে মন্তব্য করার আগে দয়া করে jQuery ডকুমেন্টেশন পড়ুন।
zgr024

@ zgr024 জরিমানা, আমার মন্তব্য মুছে ফেলা
ডেমোকিকব্রি 7

4
@ ড্যানিয়েলরিকোভস্কি, এখানে এই জিকুয়েরির সাথে কী আছে jQuery সেখানে বাজে কথা। ভ্যানিলা জেএস এর সাথে কথা বলা যাক।
পেসারিয়ার

13

অক্ষম বৈশিষ্ট্য সেট করতে আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন। 'সাবমিট' বাটন ক্লিক ইভেন্টটি এটি করার জন্য সম্ভবত সেরা জায়গা।

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


7

আপনি যদি কোনও লুকানো অভিভাবক উপাদানটির মধ্যে থাকা সমস্ত উপাদান বা নির্দিষ্ট উপাদানগুলিকে অক্ষম করতে চান তবে আপনি ব্যবহার করতে পারেন

$("div").filter(":hidden").children("input[type='text']").attr("disabled", "disabled");

এই উদাহরণটি http://jsfiddle.net/gKsTS/ একটি লুকানো ডিভের মধ্যে সমস্ত পাঠ্যবাক্সকে অক্ষম করে


এটি একটি খুব ভাল সমাধান হিসাবে লুকানো ডিভের মাধ্যমে পুনরাবৃত্তি হয় এবং সমস্ত অক্ষম করে। এটি আরও +1 পাওয়া উচিত
ইপ্পি

6

কি সম্পর্কে:

$('#divID').children(":input").prop("disabled", true); // disable

এবং

$('#divID').children(":input").prop("disabled", false); // enable

সমস্ত বাচ্চাদের ইনপুটগুলি (নির্বাচিত, চেকবক্স, ইনপুট, টেক্সারিয়াস, ইত্যাদি) একটি লুকানো ডিভের মধ্যে টগল করতে।


আপনি যদি সমস্ত ইনপুট দখল করতে চান তবে এটি দুর্দান্ত সমাধান। ভাল কাজ
ডোজ 87

3

একটি খুব সাধারণ (তবে সর্বদা সর্বাধিক সুবিধাজনক নয়) সমাধান হ'ল "নাম" বৈশিষ্ট্যটি সরিয়ে ফেলা - মানকটির প্রয়োজন ব্রাউজারগুলি নামবিহীন মান না প্রেরণ করে এবং আমি জানি সমস্ত ব্রাউজার এই নিয়ম মেনে চলে।


4
প্রস্তাবিত নয় কারণ আপনি জাভাস্ক্রিপ্টের মাধ্যমে রাজ্যগুলি পরিবর্তন করলে আপনি সমস্ত নামের বৈশিষ্ট্যগুলি ক্যাচ না করেই ইনপুটগুলি খুব কমই পুনরায় সেট করতে পারেন। অক্ষম অবস্থানে স্যুইচ করা সহজ উপায় easier
সাইমন

1

আমি হয় ইনপুট থেকে মানটি সরিয়ে ফেলব বা ডম থেকে ইনপুট বস্তুটি আলাদা করব যাতে এটি প্রথম স্থানে পোস্ট করার অস্তিত্ব না থাকে।

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