Form និង Table
មាតិកា
- Form ធ្វើអ្វី
- Label និង Input
- ប្រភេទ Input
- Textarea, Select, Checkbox និង Radio
- Button
- Validation ដែលមានស្រាប់ក្នុង Browser
- ទិន្នន័យទៅទីណា
- Table
- សាកល្បងដោយខ្លួនឯង
1. Form ធ្វើអ្វី
Form ប្រមូលទិន្នន័យពីអ្នកប្រើ ហើយផ្ញើវាទៅកន្លែងណាមួយ។ ប្រអប់ login, របារស្វែងរក, ទំព័រទូទាត់ប្រាក់ និងប្រអប់បញ្ចេញមតិ សុទ្ធតែជា form។ HTML ផ្តល់ជូនអ្នកនូវគ្រប់ control ដែលអ្នកត្រូវការ — ប្រអប់អត្ថបទ, checkbox, ម៉ឺនុយ, button — ហើយ browser ផ្តល់ឥរិយាបថ៖ ការគាំទ្រ keyboard, keyboard លើទូរស័ព្ទ និង validation មូលដ្ឋាន។ ទាំងអស់នេះ មុនពេលអ្នកសរសេរ JavaScript ណាមួយ។
Wrapper គឺ element <form>៖
<form action="/contact" method="post">
<!-- controls go here -->
</form>
action គឺជា URL ដែលទិន្នន័យត្រូវផ្ញើទៅ ហើយ method គឺជា HTTP method ពី HTTP Request។ ផ្នែកទី 7 ពន្យល់ពីអ្វីដែលត្រូវធ្វើនៅលើ static site ដែលគ្មាន server សម្រាប់ផ្ញើទៅ។
2. Label និង Input
គូសំខាន់គឺ <label> និង <input>៖
<label for="name">Your name</label>
<input type="text" id="name" name="name">
Attribute បីភ្ជាប់អ្វីៗទាំងអស់ចូលគ្នា៖
forលើ label ត្រូវគ្នានឹងidរបស់ input។ នេះភ្ជាប់ពួកវា៖ ការចុចលើ label ធ្វើឲ្យ field ទទួល focus ហើយ screen reader ប្រកាស label នៅពេល field ត្រូវ focus។nameគឺជា key ដែលតម្លៃត្រូវបានផ្ញើក្រោមឈ្មោះនោះ។ បើគ្មានវា តម្លៃរបស់ field នឹងមិនត្រូវបានផ្ញើទាល់តែសោះ។idត្រូវតែមានតែមួយគត់នៅលើទំព័រ។
រាល់ form field ត្រូវការ label។ placeholder មិនមែនជា label ទេ — វាបាត់ទៅភ្លាមៗនៅពេលអ្នកវាយ ហើយច្រើនតែស្រអាប់ពេកមិនអាចអានបាន។ អ្នកអាចប្រើ placeholder ជាតម្រុយ (placeholder="e.g. Dara Sok") បន្ថែមពី label ប៉ុន្តែមិនមែនជំនួសវាឡើយ។
អ្នកក៏អាចដាក់ input នៅក្នុង label បានដែរ ក្នុងករណីនោះមិនចាំបាច់ប្រើ for និង id ទេ៖
<label>Your name <input type="text" name="name"></label>
3. ប្រភេទ Input
Attribute type ប្រែ element មួយទៅជា control ជាច្រើន៖
| Type | ផ្តល់ឲ្យអ្នក | កំណត់ចំណាំ |
|---|---|---|
text | ប្រអប់អត្ថបទមួយបន្ទាត់ | លំនាំដើម |
email | ប្រអប់អត្ថបទដែលពិនិត្យរក @ | keyboard លើទូរស័ព្ទបង្ហាញ @ |
tel | លេខទូរស័ព្ទ | ទូរស័ព្ទបង្ហាញបន្ទះលេខ |
url | អាសយដ្ឋាន web | ត្រូវចាប់ផ្តើមដោយ scheme |
number | ប្រអប់លេខដែលមានសញ្ញាកើន/ថយ | គាំទ្រ min, max, step |
password | ចំណុចៗជំនួសអក្សរ | លាក់អត្ថបទ ប៉ុន្តែមិនត្រូវបានអ៊ិនគ្រីបដោយខ្លួនវាទេ |
date | ឧបករណ៍ជ្រើសកាលបរិច្ឆេទ | ទម្រង់តម្លៃគឺ YYYY-MM-DD |
search | ប្រអប់ស្វែងរក | ច្រើនតែមានប៊ូតុងសម្អាត |
file | ឧបករណ៍ជ្រើស file | ត្រូវការ enctype លើ form |
range | របារអូស | |
color | ឧបករណ៍ជ្រើសពណ៌ | |
hidden | គ្មានអ្វីមើលឃើញ | ផ្ញើតម្លៃថេរមួយ |
ការជ្រើសរើស type ឲ្យត្រូវគឺជាការកែលម្អឥតគិតថ្លៃ៖ keyboard ត្រឹមត្រូវលើទូរស័ព្ទ, validation ស្វ័យប្រវត្តិ ហើយពេលខ្លះមានឧបករណ៍ជ្រើសកាលបរិច្ឆេទ ឬពណ៌ដែលមានស្រាប់ក្នុង browser។
4. Textarea, Select, Checkbox និង Radio
<textarea> សម្រាប់អត្ថបទច្រើនបន្ទាត់។ វាមាន closing tag ហើយ rows កំណត់កម្ពស់របស់វា៖
<label for="message">Message</label>
<textarea id="message" name="message" rows="5"></textarea>
<select> គឺជាម៉ឺនុយ drop-down នៃ <option>៖
<label for="topic">Topic</label>
<select id="topic" name="topic">
<option value="">Choose one…</option>
<option value="job">Job opportunity</option>
<option value="project">Project collaboration</option>
<option value="other">Something else</option>
</select>
Checkbox សម្រាប់ជម្រើសសូន្យឬច្រើន ចំណែក radio button សម្រាប់ជម្រើសតែមួយប៉ុណ្ណោះ។ Radio នៅក្នុងក្រុមតែមួយប្រើ name ដូចគ្នា។ សូមព័ទ្ធក្រុមមួយក្នុង <fieldset> ជាមួយ <legend> ដែលដាក់ឈ្មោះឲ្យវា៖
<fieldset>
<legend>How should I reply?</legend>
<label><input type="radio" name="reply" value="email" checked> Email</label>
<label><input type="radio" name="reply" value="phone"> Phone</label>
</fieldset>
<label>
<input type="checkbox" name="newsletter" value="yes">
Send me occasional updates
</label>
5. Button
Element <button> គឺជា control ដែលអាចចុចបាន ហើយ type របស់វាសំខាន់៖
<button type="submit">Send</button>
<button type="reset">Clear</button>
<button type="button">Does nothing by itself</button>
submitផ្ញើ form (លំនាំដើមនៅក្នុង form)។resetដាក់គ្រប់ field ត្រឡប់ទៅតម្លៃចាប់ផ្តើមវិញ។buttonមិនធ្វើអ្វីទេ រហូតដល់មាន JavaScript ភ្ជាប់ជាមួយវា។
ប្រើ <button> សម្រាប់ សកម្មភាព និង <a> សម្រាប់ ការរុករក — link ទៅកន្លែងណាមួយ ចំណែក button ធ្វើអ្វីមួយ។ កុំធ្វើឲ្យ <div> មើលទៅដូច button ព្រោះអ្នកនឹងបាត់ការគាំទ្រ keyboard និងអត្ថន័យសម្រាប់ screen reader។
6. Validation ដែលមានស្រាប់ក្នុង Browser
Browser អាចពិនិត្យទិន្នន័យមុនពេល form ត្រូវបាន submit។ បន្ថែម attribute ហើយ browser នឹងបញ្ឈប់ការ submit ព្រមទាំងបង្ហាញសារនៅពេលមានអ្វីខុស៖
| Attribute | ផលប៉ះពាល់ |
|---|---|
required | មិនអាចទទេបាន |
minlength, maxlength | ដែនកំណត់លើប្រវែងអត្ថបទ |
min, max | ដែនកំណត់លើលេខ និងកាលបរិច្ឆេទ |
pattern="[0-9]{9,10}" | ត្រូវត្រូវនឹង regular expression |
type="email" | ត្រូវមើលទៅដូចអាសយដ្ឋាន email |
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
សូមសាកល្បង submit ពេលវាទទេ រួចសាកល្បងជាមួយ abc។ Browser ទប់ការ submit ហើយប្រាប់អ្នកពីមូលហេតុ — មិនពាក់ព័ន្ធ JavaScript ទេ។
ការព្រមានមួយ៖ validation របស់ browser គឺជាភាពងាយស្រួល មិនមែនជាសុវត្ថិភាពទេ។ នរណាក៏អាចរំលងវាបាន ដោយកែទំព័រក្នុង DevTools ឬផ្ញើ request ដោយផ្ទាល់ជាមួយ curl។ Server ពិតប្រាកដណាមួយត្រូវតែពិនិត្យទិន្នន័យម្តងទៀត។
7. ទិន្នន័យទៅទីណា
នៅពេលអ្នកចុច Submit, browser បង្កើត HTTP request ពីគ្រប់ field ដែលមាន name។ ជាមួយ method="get" តម្លៃទាំងនោះចូលទៅក្នុង query string — ?name=Dara&topic=job ដូចដែលបានឃើញនៅជំពូក URL។ ជាមួយ method="post" ពួកវានៅក្នុង request body។ ទោះបីជាបែបណាក៏ដោយ ត្រូវតែមានអ្វីមួយនៅលើ server ដែលទទួលពួកវា។
Static site មិនមាន server ផ្ទាល់ខ្លួនទេ ដូច្នេះវាមិនអាចដំណើរការ form ដោយខ្លួនឯងបានទេ។ អ្នកមានជម្រើសស្មោះត្រង់បី៖
mailto:— link ធម្មតាដែលបើកកម្មវិធី email របស់អ្នកទស្សនា។ សាមញ្ញ ហើយដំណើរការគ្រប់ទីកន្លែង ប៉ុន្តែមិនមែនជា form ពិតប្រាកដទេ។- សេវា form ដូចជា Formspree ឬ Web3Forms។ ពួកគេផ្តល់ URL ឲ្យអ្នកប្រើជា
actionទទួលទិន្នន័យ ហើយផ្ញើ email មកអ្នក។ - Backend ផ្ទាល់ខ្លួនរបស់អ្នក — លើសពីស៊េរីនេះ។
សម្រាប់គម្រោងនេះ សូមសាងសង់ form ឲ្យ HTML ពេញលេញ និងត្រឹមត្រូវ ហើយចង្អុល action ទៅសេវា form នៅពេលក្រោយ ប្រសិនបើអ្នកចង់ឲ្យវាដំណើរការពិត។ Markup ដែលអ្នកសរសេរគឺដូចគ្នាទាំងពីរករណី។
<form action="https://example.com/your-form-url" method="post">
<h2>Get in touch</h2>
<label for="name">Name</label>
<input type="text" id="name" name="name" required>
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" required></textarea>
<button type="submit">Send</button>
</form>
8. Table
<table> សម្រាប់ ទិន្នន័យជាតារាង — ព័ត៌មានដែលមានជួរដេក និងជួរឈរ ដូចជាកាលវិភាគ ឬបញ្ជីតម្លៃ។ មិនមែនសម្រាប់រៀបចំ layout ទំព័រទេ (នោះជាតួនាទីរបស់ជំពូកទី 9 និង 10)។
<table>
<caption>My skills</caption>
<thead>
<tr>
<th scope="col">Skill</th>
<th scope="col">Level</th>
<th scope="col">Since</th>
</tr>
</thead>
<tbody>
<tr>
<td>HTML</td>
<td>Comfortable</td>
<td>2026</td>
</tr>
<tr>
<td>CSS</td>
<td>Learning</td>
<td>2026</td>
</tr>
</tbody>
</table>
ផ្នែកនីមួយៗ៖
| Element | តួនាទី |
|---|---|
<caption> | ចំណងជើងរបស់ table |
<thead>, <tbody>, <tfoot> | ក្រុមជួរដេកសម្រាប់ header, body និង footer |
<tr> | ជួរដេកមួយនៃ table |
<th> | cell header។ scope="col" ឬ scope="row" ប្រាប់ថាវាដាក់ស្លាកក្នុងទិសដៅណា |
<td> | cell ទិន្នន័យ |
Header cell ដែលមាន scope អនុញ្ញាតឲ្យ screen reader ប្រកាស "Level: Comfortable" សម្រាប់ cell មួយ ជំនួសឲ្យការអានតែ "Comfortable" ទទេៗដោយគ្មានបរិបទ។ ដើម្បីបញ្ចូល cell ចូលគ្នា សូមប្រើ colspan និង rowspan។
Table ដែលគ្មាន border មើលទៅដូចអត្ថបទធម្មតា។ នោះជារឿងធម្មតា — វាជាការងាររបស់ CSS ក្នុងការធ្វើឲ្យវាស្អាត ហើយអ្នកនឹងធ្វើនោះនៅជំពូកទី 6។
9. សាកល្បងដោយខ្លួនឯង
- បន្ថែម contact form។ ដាក់ form ពីផ្នែកទី 7 ក្នុង section
#contactនៃindex.html។ ពិនិត្យថាការចុចលើ label នីមួយៗធ្វើឲ្យ field របស់វាទទួល focus។ - សាកល្បង validation។ Submit ពេលវាទទេ រួចសាកល្បងជាមួយ email មិនត្រឹមត្រូវ។ បន្ថែម
minlength="10"លើ message ហើយសាកល្បងម្តងទៀត។ - សាកល្បងប្រភេទ input។ បន្ថែម
<input type="date">,type="range"និងtype="color"ទៅ file សាកល្បងមួយ។ បើកទំព័រនៅលើទូរស័ព្ទរបស់អ្នកតាមអាសយដ្ឋាន network របស់ Live Server ឬក្នុងរបៀបឧបករណ៍របស់ DevTools ហើយប្រៀបធៀប keyboard សម្រាប់text,emailនិងtel។ - រំលង validation របស់ខ្លួនឯង។ នៅក្នុង DevTools សូមលុប attribute
requiredពី field មួយ ហើយ submit ពេលវាទទេ។ នេះជាមូលហេតុដែល server ពិតប្រាកដក៏ត្រូវតែ validate ដែរ។ - បន្ថែម table ជំនាញ ទៅទំព័រ About ជាមួយ
<caption>, header cell ដែលមានscopeនិងយ៉ាងហោចណាស់បួនជួរដេក។ - ពិនិត្យ traffic។ ប្តូរ form ទៅ
method="get"និងaction="https://httpbin.org/get"ហើយ submit រួចអាន query string នៅក្នុង address bar។
សូម commit ការងាររបស់អ្នក។ ឥឡូវនេះ HTML ចប់ហើយ៖ អ្នកអាចរៀបចំរចនាសម្ព័ន្ធទំព័រណាក៏បាន។ ចាប់ពីជំពូកបន្ទាប់តទៅ យើងនឹងធ្វើឲ្យវាស្អាតដោយ CSS។
ទិញកាហ្វេជូនខ្ញុំ
ចូលចិត្តមេរៀននេះមែនទេ? សូមពិចារណាទិញកាហ្វេជូនខ្ញុំមួយកែវ ដើម្បីគាំទ្រការបង្កើតមាតិកាឥតគិតថ្លៃបន្ថែមទៀត!