এইচটিএমএল ফর্ম ট্যাগের উদ্দেশ্য কী


107

Html এ ফর্ম ট্যাগের উদ্দেশ্যটি আমি বুঝতে পারি না।

আমি সহজেই কোনও ফর্ম ট্যাগ ব্যবহার না করে নিখুঁতভাবে কোনও ইনপুট ধরণের ব্যবহার করতে পারি। এটি ইনপুটগুলির চারপাশে মোড়ানো প্রায় বেপরোয়া মনে হয়।

অতিরিক্তভাবে, যদি আমি সার্ভার-সাইড পৃষ্ঠাতে কল করতে এজ্যাক্স ব্যবহার করি, তবে আমি কেবল তার জন্য jQuery ব্যবহার করতে পারি। একমাত্র ব্যতিক্রম হ'ল আমি লক্ষ্য করেছি যে কোনও কারণে আপনাকে কোনও ফর্ম ট্যাগের চারপাশে একটি আপলোড স্ক্রিপ্টটি আবদ্ধ করতে হবে।

তাহলে কেন এখনও ফর্মগুলি পাঠ্যের ইনপুটগুলির মতো সাধারণ জিনিসের জন্য এত ব্যাপকভাবে ব্যবহৃত হয়? দেখে মনে হচ্ছে এটি খুব প্রত্নতাত্ত্বিক এবং অপ্রয়োজনীয় জিনিস।

আমি কেবল এর সুবিধা বা প্রয়োজন দেখছি না। হয়তো আমি কিছু মিস করছি।


এইচটিএমএল <ফর্ম> ট্যাগ ছাড়াই আপনি কীভাবে আপনার ফর্মটির ক্রিয়া এবং পদ্ধতিটি সংজ্ঞায়িত করবেন?
ডায়রিয়ান

4
যদি আমি এটি jQuery তে করতে পারি, আমি বোতামে ক্লিক () ফাংশনটি ব্যবহার করব এবং এর ভিতরে আমি এজাক্স () ফাংশনটি ব্যবহার করব। আমার মতে কোডটি পড়া অনেক সহজ এবং সহজ। এবং আমি সহজেই সরল জাভাস্ক্রিপ্ট সহ পৃষ্ঠাটি রিফ্রেশ করতে পারি
ডি-মার্ক

24
আমি অবাক হয়েছি যে এই প্রশ্নটি নিম্নাঞ্চলের লোকেরা পেয়েছে। আমি পুরোপুরি এই googled।
dwjohnston

4
@ দ্বিজোহনস্টন আপনার অবশ্যই এখানে নতুন হতে হবে ...
স্টেফানো

4
দুর্দান্ত প্রশ্ন! আমি ফর্মগুলি ব্যবহার করতে পছন্দ করি না এমন অন্যান্য কারণগুলির মধ্যে এটি আপনার পৃষ্ঠার কাঠামোকে সীমাবদ্ধ করে তোলে (কারণ ফর্মগুলির অভ্যন্তরে আপনার ফর্ম থাকতে পারে না), কিছু সিরিয়ালাইজেশন কিরকগুলি সত্য যা চেকবক্সগুলি চেক না করা থাকলে তা উপেক্ষা করা হবে (এর অর্থ প্রায়শই আমি শেষ করি) ম্যানুয়ালি জমা দেওয়ার ডেটা প্রস্তুত করে), এবং কারণ এইচটিএমএল মূলত পৃষ্ঠার বিষয়বস্তু এবং কাঠামো, যখন জেএস হ'ল গতিশীলতা। ফর্ম উপাদানগুলি জেএসের কাজের বিষয়ে কিছুটা ওভারল্যাপ করছে এবং আমি আমার পৃষ্ঠাগুলি কাঠামোগত করতে চাই।
3

উত্তর:


93

আপনি যা হারিয়েছেন তা হল শব্দার্থক মার্কআপ এবং ডিওএম বোঝার an

বাস্তবতাত্ত্বিকভাবে, আপনি HTML5 মার্কআপের সাহায্যে যা কিছু করতে পারেন তা করতে পারেন এবং বেশিরভাগ ব্রাউজারগুলি এটিকে বিশ্লেষণ করবে। শেষবার আমি চেক করা থাকে, ওয়েবকিট / নাচা এমনকি পারবেন ভিতরে সিউডো-উপাদানের <input>উপাদান , যা বৈশিষ্ট একটি স্পষ্ট লঙ্ঘন - গেকো এত না। যাইহোক, আপনার মার্কআপের সাথে আপনি যা পছন্দ করেন তা করা নিঃসন্দেহে শব্দার্থবিজ্ঞানের বিষয়ে অবৈধ করে দেবে।

কেন আমরা <input>উপাদানগুলির ভিতরে উপাদান রাখি <form>? একই কারণে আমরা <li>ট্যাগগুলির মধ্যে <ul>এবং <ol>উপাদানগুলির ভিতরে রেখেছি - এটি সেখান থেকেই। এটি শব্দার্থগতভাবে সঠিক, এবং মার্কআপ সংজ্ঞায়িত করতে সহায়তা করে। পার্সার্স, স্ক্রিন রিডার এবং বিভিন্ন সফ্টওয়্যার আপনার মার্কআপটি যখন শব্দার্থগতভাবে সঠিক হয় তখন এটি আরও ভালভাবে বুঝতে পারে - যখন মার্কআপটির অর্থ থাকে কেবল কাঠামো নয়।

<form>উপাদান এছাড়াও আপনি নির্ধারণ করতে পারবেন methodএবং actionবৈশিষ্ট্যাবলী, যা ব্রাউজার যখন ফর্ম জমা করতে হবে বলুন। AJAX একটি 100% কভারেজ টুল নয়, এবং ওয়েব বিকাশকারী হিসাবে আপনাকে করুণাময় অবক্ষয়ের অনুশীলন করা উচিত - জেএস বন্ধ থাকা সত্ত্বেও ফর্মগুলি জমা দেওয়া এবং ডেটা স্থানান্তর করতে সক্ষম হওয়া উচিত।

পরিশেষে, ফর্মগুলি সমস্ত ডিওমে সঠিকভাবে নিবন্ধিত হয়। আমরা জাভাস্ক্রিপ্ট দিয়ে এই এক নজরে নিতে পারেন। আপনি যদি এই খুব পৃষ্ঠায় আপনার কনসোলটি খোলেন এবং টাইপ করুন:

document.forms

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

এখানে কিছু পড়ার উপাদান রয়েছে:

দ্রষ্টব্য: <input>উপাদানগুলি ফর্মের বাইরে ব্যবহার করা যেতে পারে, তবে যদি আপনার উদ্দেশ্যটি কোনও উপায়ে ডেটা জমা দেওয়ার হয় তবে আপনার উচিত একটি ফর্ম ব্যবহার করা।


এটি প্রশ্নের উত্তর যেখানে আমি প্রশ্নটি প্রায় ঘুরিয়ে ফেলি।

আমি কীভাবে ফর্ম এড়িয়ে আমার জীবনকে আরও কঠিন করে তুলছি?

প্রথম এবং সর্বাগ্রে - ধারক উপাদান। কার দরকার আছে, তাই না ?!

অবশ্যই আপনার সামান্য <input>এবং <button>উপাদানগুলি কোনও ধরণের ধারক উপাদানের ভিতরে বাসা বাঁধে ? এগুলি কেবল সমস্ত কিছুর মাঝে ভাসতে পারে না। সুতরাং যদি না <form>, তবে কি? ক <div>? ক <span>?

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

না? উহু.

এই মুহুর্তে আমার মাথার ভয়েসগুলি খুব কৌতূহলযুক্ত যে আপনি কীভাবে এই সমস্ত বিভিন্ন এজেএক্স পরিস্থিতিতে আপনার ইভেন্ট হ্যান্ডলার তৈরি করেন। বাইটগুলি বাঁচাতে আপনার মার্কআপটি কাটা দরকার হলে অবশ্যই অনেক কিছু আছে। তারপরে আপনাকে অবশ্যই প্রতিটি এএএএক্সএক্স ইভেন্টের জন্য কাস্টম ফাংশন তৈরি করতে হবে যা উপাদানগুলির প্রতিটি 'সেট' এর সাথে মিলে যায় - যা আপনাকে পৃথকভাবে বা ক্লাসগুলির সাথে লক্ষ্য করতে হবে, তাই না? এই উপাদানগুলি প্রকৃতপক্ষে গোষ্ঠীভুক্ত করার কোনও উপায় নেই, যেহেতু আমরা প্রতিষ্ঠিত করেছি যে তারা কেবল মার্কআপের চারপাশে ঘুরে বেড়াচ্ছে, প্রয়োজন না হওয়া পর্যন্ত যা কিছু করছে।

সুতরাং আপনি কাস্টম কোড কয়েক হ্যান্ডলার।

$('#searchButton').on('click', function (e) {
  e.preventDefault();

  var search = $('#mySearch');

  $.ajax({
    url: 'http://example.com/text',
    type: 'GET',
    dataType: 'text',
    data: 'query=' + search.val(),
    success: function (data) {
      console.log(data);
    }
  });
});


$('#login').on('click', function (e) {
  e.preventDefault();
  var user = $('#username'),
      pass = $('#password'),
      rem = $('#remember');
  
  $.ajax({
    url: 'http://example.com/login',
    type: 'POST',
    data: user.add(pass, rem).serialize(),
    dataType: 'text',
    success: function (data) {
      console.log(data);
    }
  });
});
<!-- No containers, extra markup is silly. -->

<input type="text" id="mySearch" value="query" />
<button id="searchButton">Search</button>
<input type="text" id="username" name="username" value="user" />
<input type="password" id="password" name="password" value="pass" />
<input type="checkbox" id="remember" name="remember" checked /> stay logged in
<button id="login">Login</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

এটি সেই অংশ যেখানে আপনি কিছু বলছেন:

'যদিও আমি সম্পূর্ণ পুনরায় ব্যবহারযোগ্য ফাংশন ব্যবহার করি। অতিরঞ্জিত করা বন্ধ করুন। '

যথেষ্ট ভাল, তবে আপনার এখনও এই অনন্য উপাদানগুলির সেটগুলি তৈরি করতে হবে, বা লক্ষ্য শ্রেণীর সেটগুলি ঠিক আছে? আপনার এখনও এই উপাদানগুলিকে একরকম গ্রুপ করতে হবে ।

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

function genericAjaxForm (e) {
  e.preventDefault();
  var form = $(this);
  
  return $.ajax({
    url: form.attr('action'),
    type: form.attr('method'),
    dataType: form.data('type'),
    data: form.serialize()
  });
}

$('#login-form').on('submit', function (e) {
  genericAjaxForm.call(this, e).done(function (data) {
    console.log(data);
  });
});
<form action="http://example.com/login" method="POST" data-type="text" id="login-form">
  <input type="text" name="username" value="user" />
  <input type="password" name="password" value="mypass" />
  <label>
    <input type="checkbox" name="remember" /> Remember me
  </label>

  <button type="submit">Login</button>
</form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

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

এবং এখন আপনি বলেছেন:

'তবে আমি আমার সিউডো-ফর্মগুলি <div>নির্দিষ্ট আইডি থাকা উপাদানগুলিতে গুটিয়ে রাখি - আমি তারপরে ইনপুটগুলি আলগাভাবে .findএবং .serializeতাদের সাথে লক্ষ্যবস্তু করতে পারি এবং ...'

ওহ, এটা কি? আপনি আসলে আপনার <input>উপাদানগুলি একটি পাত্রে জড়িয়ে রাখবেন?

তাহলে কেন এটি এখনও ফর্ম নয়?


4
সব ফর্মে উঁকি দেওয়ার সাথে এটি একটি ভাল বিষয়। কেন এটি সুবিধা হিসাবে দেখা হবে তা আমি দেখতে পাচ্ছি। তা ছাড়া, আপনি কেন বলেন যে ইনপুটগুলি কোনও ফর্মের অভ্যন্তরে ব্যবহার করা উচিত? এটি কোনও বাস্তব সুবিধা প্রদান করে বলে মনে হচ্ছে না। কেবল অতিরিক্ত কোড। আমি কখনই অনলাইনে এমন কিছু পড়িনি যা বলে যে ফর্মগুলির বাইরে ইনপুট স্থাপন করা অর্থহীনভাবে ভুল, সুতরাং আমি এটি ইউলস এবং আউলগুলির সাথে তুলনা করা ন্যায়সঙ্গত বলে মনে করি না। এবং বাস্তবের দিক থেকে, আমি কখনই চাইব না যে যদি কেউ আমার ওয়েবসাইটগুলি জাভাস্ক্রিপ্ট বন্ধ করে দেয় তবে সেগুলি ব্যবহার করা উচিত। এটি সম্ভবত অনলাইনে ব্যবহারকারীদের কেবল 1% এর জন্য অ্যাকাউন্ট করবে।
ডি-মার্ক

4
আপনি কেন কম <form>উপাদান ব্যবহার করেন সে সম্পর্কে আপনি উত্তর খুঁজতে চাইছেন এমনটি কম মনে হচ্ছে এবং আপনি নিজের মত করে নিজের মার্কআপ পছন্দগুলি নিশ্চিত করার চেষ্টা করছেন more এটি ঠিক আছে, যেমনটি আমি বলেছিলাম, আপনি আপনার মার্কআপ দিয়ে যা খুশি তা করতে নির্দ্বিধায়, তবে কেন আমরা বিকাশকারীরা ফর্মগুলি ব্যবহার করি তার মূল কারণগুলি আমি ব্যাখ্যা করেছি
ওকা

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

প্রসঙ্গে নির্ভর করে। কোনও ইনপুট যা কখনই সরাসরি জমা দেয় না যেমন একটি অনুসন্ধান বাক্স যা এআইএক্সএক্সের মাধ্যমে একচেটিয়াভাবে কোনও এআইপি এন্ডপয়েন্টটি পোল করে অন্য কোনও ইভেন্টগুলিতে submit, কোনও ফর্মের মধ্যে আবৃত হওয়া বাদ দিতে পারে কারণ এতে জাভাস্ক্রিপ্ট ছাড়া কোনও কার্যকারিতা থাকবে না । এটির <input>বাইরে কোনও <form>, সম্ভবত সম্ভবত দুর্বল শব্দার্থবিজ্ঞান থাকা অবৈধ মার্কআপ নয় । যদি কোনও উপায় থাকে যে কোনও সঠিক submitইভেন্ট সহ এজেএক্স ছাড়াই ডেটা জমা দেওয়া যায় , তবে একটি ফর্ম সম্ভবত সেরা। আবার, উপাদানটির একটি ধারক প্রয়োজন, এবং <form>উপাদানগুলি ডিফল্টরূপে ব্লক স্তরের, তাই তারা ঠিক একটির মতো কাজ করে <div>
ওকা

7

আপনি যদি এজেএক্স ছাড়াই ফর্ম জমা দিতে সক্ষম হতে চান তবে ফর্ম ট্যাগগুলি এখনও প্রয়োজনীয় (এটি উন্নয়নের প্রাথমিক পর্যায়ে কার্যকর হতে পারে)। তবে কোনও ফর্ম ট্যাগ ছাড়াই ডেটা জমা দেওয়ার জন্য জাভাস্ক্রিপ্ট ব্যবহার করা সম্ভব হলেও কয়েকটি সুবিধা এখনও মাথায় আসে:

  1. ফর্ম ট্যাগ ব্যবহার করে লোকেরা আপনার উদ্দেশ্যগুলি দেখিয়ে কিছু ক্ষেত্রে আপনাকে কোড পড়তে ও বুঝতে সহায়তা করতে পারে।
  2. 'জমা দিন' পদ্ধতি ফর্মগুলিতে উপলব্ধ। যদি আপনার কাছে একটি ইনপুট [টাইপ = জমা দিন] সহ একটি ফর্ম থাকে এবং এটি অক্ষম থাকে না, তবে অন্য ফর্মের ইনপুটগুলির একটি পূরণ করার সময় যখন কেউ 'প্রবেশ' হিট করে, ফর্মটি জমা দেবে। আপনি ইনপুট উপাদানগুলিতে 'কীডাউন' ইভেন্টটি শুনে এখনও তা করতে পারেন, তবে এটি ইউআইয়ের একটি দুর্দান্ত বিট যা আপনি ফর্ম ট্যাগ সহ বিনামূল্যে পান।
  3. আরও কয়েকটি জিনিস রয়েছে যা কেবলমাত্র ফর্ম ট্যাগ নিয়ে কাজ করে বা ফর্ম ট্যাগের সাহায্যে সহজ। বিকাশকারীরা শেষ পর্যন্ত এই কেসগুলিতে চলে আসবে এবং সিদ্ধান্ত নেবে যে এগুলি সর্বদা সর্বদা ব্যবহার করা এবং সমস্যাগুলি এড়ানো। সত্যই, আসল প্রশ্নটি হল, কেন একটি ফর্ম ট্যাগ ব্যবহার করবেন না ?

এছাড়াও, jQuery এর মতো স্টাফগুলি .serialize()কেবলমাত্র ফর্ম উপাদানগুলিতে কাজ করে।
EJTH

0

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

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

অধিক তথ্য

একটি লিঙ্ক

দুটি লিঙ্ক


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

0

আমার একটি দৃশ্যাবলী ছিল যেখানে একক ওয়েব পৃষ্ঠায় 3 টি ফর্ম ছিল যার সবকটিরই আলাদা ইমেল ক্ষেত্র ছিল (বিভিন্ন আইডি সহ)। আমি <div>প্রথমে এগুলিকে আলাদা করে গুটিয়ে রেখেছিলাম । আমি সমস্ত সেগুলিকে <form>ট্যাগগুলিতে মোড়ানো না হওয়া পর্যন্ত সাফারিতে আইওএস অটো ফিল অদ্ভুত আচরণ করে । ফর্মগুলির মধ্যে একটিতে নিউজলেটার সাবস্ক্রিপশনের জন্য কেবল একটি ইনপুট ক্ষেত্র ছিল। যখন ব্যবহারকারী স্বয়ংক্রিয়ভাবে এই ইনপুটটি পূর্ণ করে, ওয়েব পৃষ্ঠাটি পরবর্তী ইনপুট ক্ষেত্রে স্ক্রোল করে যা পৃষ্ঠার বিভিন্ন অংশে অবস্থিত।

সুতরাং, ওকা দীর্ঘ পোস্টের জন্য ধন্যবাদ। যখনই সম্ভব হয় অর্থবোধক অর্থ সহ ট্যাগগুলি ব্যবহার করা উচিত, কারণ আপনি কখনই জানেন না যে কোন ব্রাউজার / ডিভাইস অন্যান্য সমাধানগুলি ভালভাবে পরিচালনা করে না।

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