জমা দেওয়া থেকে কোনও ফর্মের ইনপুট ক্ষেত্রটি বন্ধ করুন


113

আমি কিছু জাভাস্ক্রিপ্ট লিখছি (একটি গ্রিসমোনকি / ইউজার স্ক্রিপ্ট) যা কোনও ইনপুট ক্ষেত্রগুলিকে কোনও ফর্মের মধ্যে প্রবেশ করবে।

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

আমি কোনও ফর্মের মাঝখানে কিছু ইনপুট ক্ষেত্র যুক্ত করতে পারি এবং ফর্মটি জমা দেওয়ার সময় সেগুলি জমা না দেওয়ার কোনও উপায় আছে কি?

স্পষ্টতই আদর্শ জিনিসটি ইনপুট ক্ষেত্রগুলি ফর্ম উপাদানটিতে না থাকার জন্য হতে পারে তবে আমি আমার ফলাফলের পৃষ্ঠার বিন্যাসটি চাই যে আমার inোকানো ইনপুট ক্ষেত্রগুলি মূল ফর্মের উপাদানগুলির মধ্যে উপস্থিত হয়।


2
তারা জমা দিলে সমস্যা কি? সার্ভার-সাইড ল্যাঙ্গুয়েজে কোন ক্ষেত্রগুলি প্রক্রিয়া করতে হবে তা চয়ন করতে পারেন।
সরফরাজ

6
আমি বিশ্বাস করি না যে কোনও নাম ফর্ম জমা দেওয়ার পরে নামহীন ফর্ম উপাদানগুলি প্রদর্শিত হবে - আপনি যদি আপনার জেএসকে আইডির মাধ্যমে তাদের উল্লেখ করতে লিখতে পারেন তবে আপনি তাদের নামগুলি খালি রেখে দিতে পারেন, কার্যকরভাবে তাদের জমা দেওয়া থেকে আটকাতে পারেন।
gddc

2
নাম
বিশিষ্ট

@ সরফরাজ আহমেদ: আমি গ্রিসমোনকি স্ক্রিপ্ট লিখছি, তাই ওয়েবসাইটে আমার কোনও নিয়ন্ত্রণ নেই।
আকর

11
ডাব্লু 3 অনুযায়ী: একটি ফর্ম জমা দেওয়ার অন্তর্ভুক্ত করা। একটি ক্ষেত্র (ফর্ম উপাদান) অবশ্যই ফর্ম উপাদানটির মধ্যে সংজ্ঞায়িত করা উচিত এবং এর একটি নামের বৈশিষ্ট্য থাকতে হবে। নাম ছাড়া উপাদানগুলি, বা ফর্মটিতে অন্তর্ভুক্ত নেই, সার্ভারে জমা দেওয়া হয় না।
কেনেবেকে

উত্তর:


158

আপনি "নাম" বৈশিষ্ট্য ছাড়াই ইনপুট ক্ষেত্রগুলি সন্নিবেশ করতে পারেন:

<input type="text" id="in-between" />

অথবা ফর্মটি জমা দেওয়ার পরে আপনি কেবল এগুলি সরাতে পারেন (এ jQuery):

$("form").submit(function() {
   $(this).children('#in-between').remove();
});

7
নাম বাদ দেওয়া কি তা জমা দেওয়া থেকে বাধা দেয়? কুল, আমি জানতাম না। এটি কি সমস্ত ব্রাউজারে কাজ করে? এটি কোনও স্ট্যান্ডার্ডের অংশ, না এটি বাস্তবায়নের গৌরব?
ব্লেয়ারহিপ্পো

2
অ্যাকর্ন আমি সম্পূর্ণরূপে নিশ্চিত নই, তবে এটি সম্পর্কে পড়া ভাল। মূলত যদি আপনি "নাম" বৈশিষ্ট্যটির মান বাদ দেন তবে আপনি কোনও পদ্ধতির মাধ্যমে সেই মানটি অ্যাক্সেস করতে পারবেন না ... সুতরাং এটি হতে পারে যে ব্রাউজারের দ্বারা মানটি কেবল বাতিল করা হবে। যদি এটি আপনার পক্ষে নিরাপদ হতে পারে তবে jquery / javascript বিকল্পের জন্য যান (কেবলমাত্র নোট করুন যে জাভাস্ক্রিপ্ট সহজেই অক্ষম করা থাকলে ক্ষেত্রগুলি জমা দেওয়া হবে - সুতরাং এটিতে আপনার কোনও সুরক্ষা ব্যবস্থার উপর নির্ভর করবেন না) don't
গাল

17
আমি ক্রোম, ফায়ারফক্স, সাফারি সহ নামটির বৈশিষ্ট্য বাদ দিয়ে পরীক্ষা করেছি এবং মনে হয় যে ফর্ম ক্ষেত্রগুলি নামের জন্য একটি খালি স্ট্রিং সহ সার্ভারে জমা দেওয়া হচ্ছে। আমি ওয়েবস্করব ব্যবহার করে পোস্ট ডেটা পরিদর্শন করেছি এবং দেখতে পেয়েছি যে ডেটা প্রেরণ করা হচ্ছে। আপাতত আমি অনুমান করি ক্ষেত্রগুলি জমা দেওয়া থেকে বাঁচাতে আমাকে ক্ষেত্রগুলি অক্ষম করতে হবে।
kldavis4

1
@ kldavis4 - মনে হচ্ছে স্ট্রাইপ (স্ট্রাইপ.জেএস) এবং ব্র্যান্ট্রি (ব্রাইন্ট্রি.জেএস) উভয়ই [লিংক] ব্রেইন্ট্রিপেইমেন্টস ডকস / প্যাথথন / গাইডি / বিগেটিং_পেইড সার্ভারগুলিতে আঘাত করা ডেটা বন্ধ করতে "নাম রেখে" বৈশিষ্ট্য ধারণাটি ব্যবহার করে সুতরাং "পিসিআই" সম্মতির প্রয়োজনীয়তা হ্রাস করা ... আপনি যদি বলেন যে "ডেটা" প্রেরণ করা হচ্ছে তবে সেগুলি কি ত্রুটিযুক্ত?
রাহুল দিঘে


57

সবচেয়ে সহজ কাজটি হ'ল disabledবৈশিষ্ট্য সহ উপাদানগুলি সন্নিবেশ করানো ।

<input type="hidden" name="not_gonna_submit" disabled="disabled" value="invisible" />

এই পদ্ধতিতে আপনি এখনও ফর্মের শিশু হিসাবে তাদের অ্যাক্সেস করতে পারেন।

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

আপনি জমা দিতে চান না এমন ক্ষেত্রগুলি সরাতে আপনি ফর্ম জমা দেওয়ার জন্য কিছু জাভাস্ক্রিপ্ট লিখতেও পারেন।


ধারণাটি আমার sertedোকানো ক্ষেত্রগুলি ব্যবহারযোগ্য হওয়ার জন্য যাতে ব্যবহারকারী চেকবক্সগুলি পরিবর্তন করতে পারে এবং তা আমার জাভাস্ক্রিপ্টে জমা দিতে পারে।
আকর

3
অক্ষমগুলি এখনও কাজ করতে পারে, আপনি যদি কেবলমাত্র ক্ষেত্রগুলি অনসামিত বা চেকবক্সের উপর ভিত্তি করে নির্বাচিত হয়ে গেলে অক্ষম হন। এইভাবে আপনি কেবল nameসম্পত্তিটি ফেলে দিচ্ছেন না , যদি আপনি পরে এটি ব্যবহার করতে চান তবে আপনি এটি ধরে রাখতে চাইতে পারেন।
জেএমটায়লার

আপনি যখন এজেএক্স ব্যবহার করে ফর্মটি জমা দিতে হবে এবং ফর্মটি থেকে আপনার ইনপুটগুলি সরাতে বা তাদের nameবৈশিষ্ট্যগুলি সরাতে চাইবেন না তখন এটি দুর্দান্ত ।
নোলোনার

15

ইনপুট উপাদান থেকে নাম বৈশিষ্ট্য অপসারণ করার সহজ চেষ্টা ।
সুতরাং এটি দেখতে হবে

<input type="checkbox" checked="" id="class_box_2" value="2">

এই উত্তরটি হওয়া উচিত :))
ম্যাক্সিমা আলেক্জ

1
এটি চেকবাক্সগুলির জন্য কাজ করে। তবে নোট করুন যে রেডিও বোতামগুলির সাথে ব্যবহার করার সময় এটি অন্যান্য রেডিও বোতামের স্বয়ংক্রিয়ভাবে অনির্বাচন ভাঙ্গবে।
anre

10

আমি কেবল একটি অতিরিক্ত বিকল্প যুক্ত করতে চেয়েছিলাম: আপনার ইনপুটটিতে ফর্ম ট্যাগ যুক্ত করুন এবং এমন কোনও ফর্মের নাম উল্লেখ করুন যা আপনার পৃষ্ঠায় বিদ্যমান নেই:

<input form="fakeForm" type="text" readonly value="random value" />

1
যদিও এটি সম্ভবত কাজ করে (পরীক্ষিত হয়নি), যদি না আপনি fakeFormঅন্য কোথাও প্রকৃতপক্ষে সংজ্ঞা দেন (জমা দেওয়ার প্রয়োজন হয় না) অবৈধ এইচটিএমএলে এই ফলাফল করে।
ব্রায়ান এইচ।

1
আপনি যদি জাভাস্ক্রিপ্ট যুক্ত করতে না চান এবং ব্যবহারকারীর মিথস্ক্রিয়া সহ আপনার ফর্মের ভিতরে ইনপুট দরকার। এটি আমার দৃষ্টিকোণ থেকে এখন পর্যন্ত সবচেয়ে সহজ সমাধান।
yannisalexiou

1
দ্রষ্টব্য: এই সমাধানটি IE এর সাথে কাজ করে নাএখানে
হার্ভে

@ হারভেয়ে ইয়িক্স! সতর্ক থাকুন জন্য ধন্যবাদ!
জোশুয়া পিন্টার

9

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

এখানে একটি দ্রুত অনির্ধারিত উদাহরণ:

var noSubmitElements = [ 'someFormElementID1', 'someFormElementID2' ]; //...
function submitForm() {
    for( var i = 0, j = noSubmitElements.length; i < j; i++ ) {
        document.getElementById(noSubmitElements[i]).removeAttribute('name');
    }
}
form.onsubmit = submitForm;

2

আমি জানি এই পোস্টটি প্রাচীন, তবে আমি যেভাবেই উত্তর দেব। সবচেয়ে সহজ / সেরা উপায়টি আমি খুঁজে পেয়েছি কেবল খালি নামটি সেট করা।

আপনার জমা দেওয়ার আগে এটি রাখুন:

document.getElementById("TheInputsIdHere").name = "";

আপনার সমস্ত জমা ফাংশন সমস্ত এই মত হতে পারে:

document.getElementById("TheInputsIdHere").name = "";
document.getElementById("TheFormsIdHere").submit();

এটি এখনও আপনার অন্যান্য ক্ষেত্রের সাথে ফর্মটি জমা দেবে, তবে নাম ব্যতীত এটি জমা দেবে না।


সরল ও সোজা। আমি এটা পছন্দ করি!
'50 এ পবারনে

2

যোগ "অক্ষম" অক্ষম = ইনপুটে এবং যখন jQuery অ্যাট্রিবিউট অক্ষম যখন আপনি .removeAttr ব্যবহার করে এটি জমা দিতে চান অপসারণ ( 'প্রতিবন্ধী')

এইচটিএমএল:

<input type="hidden" name="test" value="test" disabled='disabled'/>

jQuery:

$("input[name='test']").removeAttr('disabled');


2

উপরের সমস্ত উত্তর ইতিমধ্যে আপনার ফর্মটি জমা দেওয়ার আগে ফর্ম নিয়ন্ত্রণের নামকরণ বা প্রোগ্রামগতভাবে সেগুলি অপসারণ সম্পর্কে সবকিছু বলেছে।

যদিও, আমার গবেষণা জুড়ে আমি অন্য একটি সমাধান খুঁজে পেয়েছি যা আমি এই পোস্টে উল্লেখ করে দেখিনি:
আপনি যদি ফর্ম নিয়ন্ত্রণগুলি encapsulate করেন তবে আপনি অপসারণ করা / প্রেরণ করতে চান না, অন্য কোনও <form>ট্যাগের মধ্যে কোনও methodগুণাবলী বা নয় path(এবং স্পষ্টত কোনও জমা দেওয়ার ধরণের নিয়ন্ত্রণ নেই) বোতামের মতো বা এতে নেপাল ইনপুট জমা দিন), তবে প্যারেন্ট ফর্ম জমা দেওয়ার মধ্যে সেই এনক্যাপসুলেটেড ফর্ম নিয়ন্ত্রণ অন্তর্ভুক্ত হবে না।

<form method="POST" path="/path">
  <input type="text" name="sent" value="..." />
  <form>
    <input type="text" name="notSent" value="..." />
  </form>
  <input type="submit" name="submit" value="Submit" />
</form>

[নাম = "notSent"] নিয়ন্ত্রণ মান প্রক্রিয়া করা হবে না বা সার্ভারের POST শেষ পয়েন্টে প্রেরণ করা হবে না, তবে [নাম = "প্রেরিত"] এর একটিটি করবে।

এই সমাধানটি বৌদ্ধিক হতে পারে তবে আমি এখনও এটি উত্তরোত্তর জন্য রেখে দিচ্ছি ...


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

1

ফর্মের জমাটি হ'ল অনসুমিত () এর মাধ্যমে কোনও ফাংশনে এবং ফর্মের উপাদানটি সরাতে নীচের মতো কিছু সম্পাদন করুন: ব্যবহার করুন getElementById() , তারপরে ব্যবহার করুন[object].parentNode.removeChild([object])

মনে করুন আপনার ক্ষেত্রের প্রশ্নের মধ্যে একটি আইডি বৈশিষ্ট্য রয়েছে "আমার_ম্রেভেবল_ফিল্ড" কোড:

var remEl = document.getElementById("my_removable_field");
if ( remEl.parentNode && remEl.parentNode.removeChild ) {
remEl.parentNode.removeChild(remEl);
}

এটি আপনি যা খুঁজছেন ঠিক তা পাবে।


0

এমনকি আপনার কি এগুলি প্রথম স্থানে ইনপুট উপাদানগুলির প্রয়োজন? আপনি জাভাস্ক্রিপ্টটি ডায়নামিকভাবে ডিভ বা প্যারাগ্রাফ তৈরি করতে বা আইটেমগুলির তালিকা তৈরি করতে বা আপনার যে তথ্য উপস্থাপন করতে চান সেগুলি অন্তর্ভুক্ত করতে পারেন।

তবে যদি ইন্টারেক্টিভ উপাদানটি গুরুত্বপূর্ণ এবং সেই উপাদানগুলিকে <form>ব্লকের বাইরে রাখার জন্য এটি বাটে ব্যথা হয় তবে পৃষ্ঠাটি জমা দেওয়ার পরে এই উপাদানগুলি ফর্ম থেকে সরিয়ে ফেলা সম্ভব হবে।


হ্যাঁ, আমার সেগুলি ইনপুট উপাদান হওয়া দরকার কারণ আমি ব্যবহারকারীর ইনপুট পাওয়ার চেষ্টা করছি।
আকর

0
$('#serialize').click(function () {
  $('#out').text(
    $('form').serialize()
  );
});

$('#exclude').change(function () {
  if ($(this).is(':checked')) {
    $('[name=age]').attr('form', 'fake-form-id');
  } else {
    $('[name=age]').removeAttr('form');    
  }
  
  $('#serialize').click();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/">
  <input type="text" value="John" name="name">
  <input type="number" value="100" name="age">
</form>

<input type="button" value="serialize" id="serialize">
<label for="exclude">  
  <input type="checkbox" value="exclude age" id="exclude">
  exlude age
</label>

<pre id="out"></pre>

দুর্ভাগ্যক্রমে ফর্ম বৈশিষ্ট্যটি আইই / এজ তে কাজ করে না। caniuse.com/#search=form%20attribute
জর্জ হিলিয়ার

0

আপনার ফর্মটিতে আপনাকে অনসামিট যুক্ত করতে হবে:

<form action="YOUR_URL" method="post" accept-charset="utf-8" onsubmit="return validateRegisterForm();">

এবং স্ক্রিপ্টটি এর মতো হবে:

        function validateRegisterForm(){
        if(SOMETHING IS WRONG)
        { 
            alert("validation failed");
            event.preventDefault();
            return false;

        }else{
            alert("validations passed");
            return true;
        }
    }

এটি আমার জন্য সর্বদা কাজ করে :)

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