HTML5 మోడరన్ ఇన్పుట్ టైప్స్: text, email, password, number, date, range, color & inputmode
2014 కంటే ముందు పాత HTML4 రోజుల్లో వెబ్లో ఒక తీవ్రమైన అసౌకర్యం ఉండేది: డేటాను స్వీకరించడానికి కేవలం ఒకే ఒక్క ఇన్పుట్ ట్యాగ్ ఉండేది — అదే type="text"! యూజర్ ఈమెయిల్ టైప్ చేయాలన్నా, ఫోన్ నంబర్ నమోదు చేయాలన్నా, పుట్టిన తేదీ ఎంచుకోవాలన్నా, లేదా పాస్వర్డ్ రాయాలన్నా ప్రతిదానికీ ఒకటే సాధారణ టెక్స్ట్బాక్స్ కనిపించేది.
యూజర్ టైప్ చేసిన ఈమెయిల్లో "@" గుర్తు ఉందో లేదో తనిఖీ చేయడానికి, లేదా నంబర్ ఫీల్డ్లో అక్షరాలు టైప్ చేయకుండా ఆపడానికి డెవలపర్లు వందల లైన్ల భారీ జావాస్క్రిప్ట్ కోడ్ రాయాల్సి వచ్చేది. వీటన్నింటికీ మించి — స్మార్ట్ఫోన్లలో ఫోన్ నంబర్ కొట్టేటప్పుడు కూడా సాధారణ అక్షరాల పెద్ద కీబోర్డే ఓపెన్ అయ్యేది; యూజర్లు నంబర్ ప్యాడ్ కోసం పదే పదే మోడ్ మార్చుకోవాల్సి వచ్చేది!
ఈ సమస్యలన్నింటికీ స్వస్తి పలుకుతూ HTML5 లో W3C వారు స్పెషలైజ్డ్ ఇన్పుట్ టైప్స్ (Specialized Modern Inputs) విప్లవాన్ని ప్రవేశపెట్టారు. కేవలం ఒక్క ఆట్రిబ్యూట్ మార్చడం ద్వారా — మొబైల్లో డయలర్ కీప్యాడ్ ఓపెన్ అయ్యేలా చేయవచ్చు, ఆటోమేటిక్ క్యాలెండర్ పాపప్ తీసుకురావచ్చు, కలర్ పికర్ చూపించవచ్చు, మరియు ఒక్క లైన్ జావాస్క్రిప్ట్ లేకుండానే బ్రౌజర్ స్థాయి ఆటో-వాలిడేషన్ను సాధించవచ్చు! ఈ అధ్యాయంలో ఆధునిక ఇన్పుట్స్ అన్నింటినీ ప్రాక్టికల్ లైవ్ కోడింగ్తో నేర్చుకుందాం!
- HTML4 vs HTML5 ఇన్పుట్ పరిణామం: జావాస్క్రిప్ట్ పై భారం తగ్గించిన నేటివ్ బ్రౌజర్ ఎలిమెంట్స్.
- ప్రాథమిక టెక్స్ట్ & పాస్వర్డ్ ఇన్పుట్స్: type="text", type="password", maxlength, మరియు minlength.
- ఆటోమేటిక్ వాలిడేషన్ ఇన్పుట్స్: type="email", type="url", మరియు type="search" ప్రత్యేకతలు.
- మొబైల్ కీబోర్డ్ మ్యాజిక్ (inputmode): స్మార్ట్ఫోన్లలో న్యూమరిక్, డెసిమల్, లేదా ఈమెయిల్ కీబోర్డ్ను రప్పించే టెక్నిక్స్.
- సంఖ్యాపరమైన కంట్రోల్స్: type="number" మరియు type="range" (స్లైడర్) లతో min, max, step వాడకం.
- తేదీ & సమయ పికర్లు: type="date", type="time", type="datetime-local", type="month", type="week".
- కలర్ & ఫైల్ సెలెక్టర్లు: type="color" కలర్ పికర్ వీల్ మరియు type="file" తో accept, multiple.
- ఇన్పుట్ స్టేట్ మేనేజ్మెంట్: readonly vs disabled మధ్య గల సూక్ష్మ వ్యత్యాసాలు.
HTML5 ప్రవేశపెట్టిన ఇన్పుట్ టైప్స్ వెబ్ డెవలప్మెంట్ను ఎంత సులభతరం చేశాయో క్రింది పోలికలో చూడండి:
ఏదైనా సాధారణ వచనాన్ని (పేరు, నగరం, చిరునామా) సేకరించడానికి type="text", మరియు రహస్య సమాచారాన్ని యూజర్ స్క్రీన్ పై ఇతరులు చూడకుండా నక్షత్రాలు (•••) గా దాచడానికి type="password" ఉపయోగిస్తాం.
<form style="max-width: 400px; padding: 16px; border: 1px solid #cbd5e1; border-radius: 8px;">
<!-- సాధారణ టెక్స్ట్ -->
<label for="uname">యూజర్నేమ్ (కనిష్టంగా 3, గరిష్టంగా 15 అక్షరాలు):</label><br>
<input type="text" id="uname" name="username" minlength="3" maxlength="15" required
style="width: 100%; padding: 8px; margin: 6px 0 14px;">
<!-- రహస్య పాస్వర్డ్ -->
<label for="pwd">రహస్య పాస్వర్డ్:</label><br>
<input type="password" id="pwd" name="password" minlength="8" required
placeholder="కనీసం 8 అక్షరాలు"
style="width: 100%; padding: 8px; margin-top: 6px;">
</form>
💡 minlength మరియు maxlength ఆట్రిబ్యూట్లు యూజర్ ఎన్ని అక్షరాల లోపు టైప్ చేయాలో బ్రౌజర్ స్థాయిలో పరిమితి విధిస్తాయి.
ఈ మూడు ఇన్పుట్ రకాలు ప్రత్యేకమైన సింటాక్స్ నియమాలను బ్రౌజర్కు పరిచయం చేస్తాయి:
type="email": యూజర్ నమోదు చేసిన టెక్స్ట్లో ఈమెయిల్ ఫార్మాట్ (name@domain.com) ఉందో లేదో సబ్మిట్ చేసేటప్పుడు బ్రౌజర్ ఆటోమేటిక్గా వాలిడేట్ చేస్తుంది. తప్పుగా ఉంటే "దయచేసి సరైన ఈమెయిల్ ఇవ్వండి" అని ఎర్రర్ చూపిస్తుంది! అంతేకాకుండా మొబైల్లో కీబోర్డ్పై "@" మరియు ".com" బటన్లు ప్రత్యక్షమవుతాయి.type="url": వెబ్సైట్ అడ్రస్లను స్వీకరించడానికి. ఇది తప్పనిసరిగాhttp://లేదాhttps://తో ప్రారంభమయ్యేలా చూస్తుంది.type="search": సెర్చ్ బాక్సుల కోసం. యూజర్ ఏదైనా టైప్ చేసినప్పుడు బాక్స్ కుడివైపున వెంటనే టెక్స్ట్ను క్లియర్ చేసే చిన్న "X" బటన్ ఆటోమేటిక్గా వస్తుంది!
<form style="max-width: 450px;">
<p>
<label for="mail">అధికారిక ఈమెయిల్:</label><br>
<input type="email" id="mail" name="email" placeholder="student@gmail.com" required style="width:100%; padding:8px;">
</p>
<p>
<label for="portfolio">మీ పోర్ట్ఫోలియో వెబ్సైట్ (URL):</label><br>
<input type="url" id="portfolio" name="website" placeholder="https://mywebsite.com" style="width:100%; padding:8px;">
</p>
<p>
<label for="query">కోర్సును వెతకండి:</label><br>
<input type="search" id="query" name="q" placeholder="ఉదా: JavaScript..." style="width:100%; padding:8px;">
</p>
<button type="submit" style="background:#10b981; color:white; padding:8px 16px; border:none; border-radius:6px; cursor:pointer;">సబ్మిట్ చేయండి</button>
</form>
మొబైల్ ఫోన్లలో యూజర్ ఎక్స్పీరియన్స్ (Mobile UX) ను నిర్దేశించే అత్యంత విప్లవాత్మక ఫీచర్ ఇది!
1. type="tel": ఫోన్ నంబర్ల కోసం వాడతారు. అయితే ప్రపంచంలో దేశాల వారీగా ఫోన్ నంబర్ల ఫార్మాట్లు వేర్వేరుగా ఉంటాయి కాబట్టి బ్రౌజర్ దీనికి ప్రత్యేకమైన సింటాక్స్ ఆంక్షలు విధించదు; కానీ మొబైల్లో నేరుగా డయలర్ నంబర్ ప్యాడ్ ను తెరుస్తుంది.
2. inputmode ఆట్రిబ్యూట్: మీ ఇన్పుట్ ఏదైనప్పటికీ, మొబైల్ స్క్రీన్పై సరిగ్గా ఏ రకమైన కీబోర్డ్ రావాలో మీరు స్వయంగా శాసించవచ్చు!
| inputmode విలువ | మొబైల్లో కనిపించే కీబోర్డ్ రకం | ఉపయోగపడే సందర్భం |
|---|---|---|
inputmode="numeric" |
కేవలం 0 నుండి 9 అంకెలు మాత్రమే ఉన్న పిన్ప్యాడ్. | బ్యాంక్ OTP, క్రెడిట్ కార్డ్ నంబర్, పిన్కోడ్. |
inputmode="decimal" |
నంబర్లతో పాటు చుక్క (డెసిమల్ పాయింట్ .) ఉన్న కీప్యాడ్. | ధరలు (₹ 499.50), బరువు (65.4 kg), ఉష్ణోగ్రత. |
inputmode="tel" |
ఫోన్ డయలర్ (*, #, + లతో కూడిన నంబర్ ప్యాడ్). | మొబైల్ మరియు ల్యాండ్లైన్ నంబర్లు. |
inputmode="email" |
@ మరియు . బటన్లతో కూడిన కీబోర్డ్. | యూజర్ ఈమెయిల్ ఎంట్రీ. |
<!-- మొబైల్లో కేవలం నంబర్ కీప్యాడ్ మాత్రమే ఓపెన్ అవుతుంది -->
<label for="otp">6 అంకెల మొబైల్ OTP:</label><br>
<input type="text" id="otp" name="otp" inputmode="numeric" maxlength="6" placeholder="123456"
style="font-size: 20px; letter-spacing: 8px; width: 180px; padding: 8px; text-align: center;">
సంఖ్యలతో కూడిన విలువలను స్వీకరించడానికి మరియు మార్చడానికి HTML5 రెండు అద్భుతమైన ఎలిమెంట్లను అందిస్తుంది:
type="number": సంఖ్యలను టైప్ చేయడానికి లేదా బాక్స్ పక్కన ఉండే చిన్న పైకి/క్రిందికి బాణాల ద్వారా (Spinner Arrows) సంఖ్యను పెంచడానికి/తగ్గించడానికి ఉపయోగపడుతుంది.type="range": ఒక స్లైడర్ బార్ను (Slider Bar) సృష్టిస్తుంది. వాల్యూమ్ పెంచడం, స్క్రీన్ బ్రైట్నెస్ మార్చడం, లేదా ధర ఫిల్టర్ (ఉదా: ₹ 500 నుండి ₹ 5000 వరకు) ఎంచుకోవడానికి ఇది సూపర్ అనుకూలం.
వీటికి వాడే 3 గోల్డెన్ ఆట్రిబ్యూట్లు:
min="సంఖ్య": అనుమతించబడే కనిష్ట విలువ.max="సంఖ్య": అనుమతించబడే గరిష్ట విలువ.step="సంఖ్య": ప్రతి క్లిక్కు ఎంత చొప్పున పెరగాలి/తగ్గాలి (ఉదా:step="5"లేదా దశాంశాల కోసంstep="0.5").
<form style="max-width: 450px;">
<!-- నంబర్ ఇన్పుట్: వయస్సు -->
<p>
<label for="age">మీ వయస్సు (18 నుండి 60 వరకు):</label><br>
<input type="number" id="age" name="age" min="18" max="60" value="25" style="padding: 6px 10px;">
</p>
<!-- రేంజ్ స్లైడర్: బడ్జెట్ -->
<p>
<label for="budget">కోర్సు బడ్జెట్ పరిమితి (₹ 1,000 నుండి ₹ 20,000):</label><br>
<input type="range" id="budget" name="price" min="1000" max="20000" step="500" value="5000" style="width: 100%;">
</p>
</form>
గతంలో వెబ్సైట్లో పుట్టిన తేదీ ఎంచుకోవడానికి 3 డ్రాప్డౌన్లు (రోజు, నెల, సంవత్సరం) లేదా భారీ jQuery/JavaScript క్యాలెండర్ ప్లగిన్లు పెట్టేవాళ్ళు. కానీ HTML5 లో కేవలం type="date" రాస్తే చాలు — ఆపరేటింగ్ సిస్టమ్ యొక్క అధికారిక క్యాలెండర్ విండో దానంతట అదే పాపప్ అవుతుంది!
| ఇన్పుట్ టైప్ | ఫార్మాట్ & వివరణ | ఉదాహరణ ఉపయోగం |
|---|---|---|
type="date" |
సంవత్సరం, నెల, రోజు (YYYY-MM-DD) | పుట్టిన తేదీ, విమాన ప్రయాణ తేదీ. |
type="time" |
గంటలు, నిమిషాలు (HH:MM AM/PM) | సినిమా షో సమయం, డాక్టర్ అపాయింట్మెంట్. |
type="datetime-local" |
తేదీ మరియు సమయం రెండూ కలిపి | రైలు బయలుదేరే ఖచ్చితమైన తేదీ & సమయం. |
type="month" |
కేవలం సంవత్సరం మరియు నెల (YYYY-MM) | క్రెడిట్ కార్డ్ ఎక్స్పైరీ తేదీ. |
<form style="max-width: 450px;">
<p>
<label for="bday">పుట్టిన తేదీ:</label><br>
<input type="date" id="bday" name="birthday" min="1950-01-01" max="2026-12-31" style="padding: 6px;">
</p>
<p>
<label for="slot">ఇంటర్వ్యూ సమయం:</label><br>
<input type="time" id="slot" name="interview_time" style="padding: 6px;">
</p>
</form>
1. type="color" (కలర్ పికర్):
యూజర్ ఒక రంగును ఎంచుకోవడానికి ఈ ట్యాగ్ ఉపయోగపడుతుంది. క్లిక్ చేయగానే పూర్తి స్థాయి కలర్ పాలెట్ వీల్ ఓపెన్ అవుతుంది. ఇది ఎంచుకున్న రంగును హెక్స్ కోడ్ (ఉదా: #10b981) రూపంలో సర్వర్కు పంపుతుంది.
2. type="file" (ఫైల్ అప్లోడ్):
యూజర్ తన కంప్యూటర్ లేదా మొబైల్ నుండి ఫోటోలు, రెజ్యూమ్ PDF లు లేదా డాక్యుమెంట్లను అప్లోడ్ చేయడానికి ఇది ఉపయోగపడుతుంది. దీనికి రెండు ముఖ్యమైన ఆట్రిబ్యూట్లు ఉంటాయి:
accept="image/*, .pdf": కేవలం ఫొటోలు లేదా PDF ఫైల్స్ మాత్రమే ఎంచుకునేలా ఫిల్టర్ చేస్తుంది.multiple: యూజర్ ఒకేసారి బహుళ ఫైళ్లను (Multiple files) సెలెక్ట్ చేసుకోవడానికి అనుమతిస్తుంది.
<form enctype="multipart/form-data" style="max-width: 450px;">
<!-- కలర్ పికర్ -->
<p>
<label for="favcolor">మీకు ఇష్టమైన వెబ్సైట్ థీమ్ రంగు:</label><br>
<input type="color" id="favcolor" name="theme_color" value="#10b981" style="width: 60px; height: 36px; cursor: pointer;">
</p>
<!-- ఫైల్ అప్లోడ్ -->
<p>
<label for="resume">మీ రెజ్యూమ్ అప్లోడ్ చేయండి (PDF లేదా DOCX మాత్రమే):</label><br>
<input type="file" id="resume" name="resume_doc" accept=".pdf, .docx" required style="margin-top: 6px;">
</p>
</form>
<form> ట్యాగ్కు తప్పనిసరిగా enctype="multipart/form-data" మరియు method="POST" ఉండాలి! లేకపోతే కేవలం ఫైల్ పేరు మాత్రమే సర్వర్కు వెళ్తుంది తప్ప అసలైన ఫైల్ డేటా అప్లోడ్ అవ్వదు.
మనం నేర్చుకున్న అన్ని ఇన్పుట్ టైప్స్ ఒక్క చూపులో:
| ఇన్పుట్ రకం (type) | పనిచేసే విధానం | ప్రత్యేక ఆట్రిబ్యూట్లు | మొబైల్ ప్రవర్తన |
|---|---|---|---|
text |
సాధారణ వచనం | minlength, maxlength, pattern | స్టాండర్డ్ QWERTY కీబోర్డ్ |
password |
రహస్య అక్షరాల మాస్కింగ్ (•••) | minlength, maxlength | ఆటో-కరెక్ట్ మరియు హిస్టరీ ఆఫ్ అవుతుంది |
email |
ఈమెయిల్ సింటాక్స్ వాలిడేషన్ | multiple (కామాలతో ఈమెయిల్స్) | @ మరియు .com బటన్లు వస్తాయి |
tel |
ఫోన్ నంబర్లు | pattern | డయలర్ నంబర్ ప్యాడ్ తెరుచుకుంటుంది |
number |
సంఖ్యా విలువలు | min, max, step | న్యూమరిక్ కీబోర్డ్ వస్తుంది |
range |
విజువల్ స్లైడర్ బార్ | min, max, step | వేలితో స్లైడ్ చేసే బార్ |
date |
క్యాలెండర్ తేదీ పికర్ | min, max (తేదీ పరిమితులు) | మొబైల్ నేటివ్ డేట్ వీల్ |
color |
హెక్స్ కలర్ పికర్ (#rrggbb) | value="#10b981" | కలర్ సెలెక్టర్ పాపప్ |
file |
పరికర ఫైళ్ల అప్లోడ్ | accept, multiple | కెమెరా లేదా ఫైల్ మేనేజర్ ఓపెన్ అవుతుంది |
ఒక ఇన్పుట్ బాక్స్ను యూజర్ మార్చకుండా ఆపడానికి HTML లో రెండు ఆట్రిబ్యూట్లు ఉన్నాయి. ఇంటర్వ్యూలలో వీటి మధ్య తేడాను ఖచ్చితంగా అడుగుతారు:
| ఫీచర్ / అంశం | readonly | disabled |
|---|---|---|
| యూజర్ మార్చవచ్చా? | మార్చలేరు (కేవలం చదవడానికి మాత్రమే). | మార్చలేరు (పూర్తిగా స్తంభించిపోతుంది). |
| సర్వర్కు డేటా వెళ్తుందా? | ✅ అవును! ఫారమ్ సబ్మిట్ చేసినప్పుడు ఈ విలువ సర్వర్కు చేరుతుంది. | ❌ వెళ్ళదు! బ్రౌజర్ దీని విలువను సర్వర్కు పంపకుండా విస్మరిస్తుంది. |
| ఫోకస్ / కాపీ చేయవచ్చా? | యూజర్ బాక్స్ను సెలెక్ట్ చేయవచ్చు, టెక్స్ట్ను కాపీ చేసుకోవచ్చు. | క్లిక్ చేయలేరు, ఫోకస్ కాదు, బూడిద రంగులో ఉంటుంది. |
| ఉదాహరణ | యూజర్ మార్చకూడని రోల్ నంబర్ లేదా అకౌంట్ ID. | షరతులు ఒప్పుకునేవరకు క్లిక్ చేయలేని సబ్మిట్ బటన్. |
ఇది చాలా మంది చేసే ఘోరమైన తప్పు! type="number" లో మొదటి సున్నా (Leading zero) ఎగిరిపోతుంది (ఉదా: '040-123456' రాస్తే '40123456' అవుతుంది). అంతేకాకుండా క్రెడిట్ కార్డ్ నంబర్లలో స్పిన్నర్ బాణాలు వచ్చి నంబర్లు మారిపోతాయి. ఫోన్ నంబర్లకు ఎల్లప్పుడూ type="tel" మరియు క్రెడిట్ కార్డులకు inputmode="numeric" మాత్రమే వాడాలి!
<form> లో enctype="multipart/form-data" లేకపోతే ఫైల్ అసలు అప్లోడ్ అవ్వదు. కేవలం ఫైల్ పేరు మాత్రమే సర్వర్కు వెళ్తుంది.
సబ్మిట్ చేసినప్పుడు ఆ ఫీల్డ్ డేటా సర్వర్కు చేరాలంటే readonly వాడాలి. disabled పెడితే ఆ డేటా సర్వర్కు వెళ్ళదు.
type="date" యొక్క అంతర్గత నిల్వ ఫార్మాట్ ఎల్లప్పుడూ YYYY-MM-DD మాత్రమే అయి ఉంటుంది. స్క్రీన్ మీద యూజర్ యొక్క స్థానిక సిస్టమ్ లాంగ్వేజ్ను బట్టి తేదీ కనిపిస్తుంది.
type="password" కేవలం స్క్రీన్ పై కనిపించకుండా చుక్కలుగా మాస్క్ మాత్రమే చేస్తుంది తప్ప డేటాను ఎన్క్రిప్ట్ చేయదు. నెట్వర్క్లో భద్రత కోసం HTTPS తప్పనిసరి.
ఈ అధ్యాయంలో మీరు నేర్చుకున్న విషయాలను స్వయంగా పరీక్షించుకోండి. ప్రతి ప్రశ్నను చదివి సమాధానం ఆలోచించిన తర్వాత "సమాధానం చూడండి" పై క్లిక్ చేయండి:
❓ ప్రశ్న 1: మొబైల్ ఫోన్లో కేవలం సంఖ్యల పిన్ప్యాడ్ మాత్రమే తెరవడానికి ఏ ఆట్రిబ్యూట్ వాడాలి?
inputmode="numeric". ఇది మొబైల్ స్క్రీన్పై కేవలం అంకెలు మాత్రమే ఉండే కీప్యాడ్ను తెరుస్తుంది (OTP, పిన్కోడ్ కోసం బెస్ట్).
❓ ప్రశ్న 2: ఫోన్ నంబర్ల కోసం type="number" ఎందుకు వాడకూడదు?
type="tel" మాత్రమే వాడాలి.
❓ ప్రశ్న 3: readonly మరియు disabled మధ్య ప్రధాన తేడా ఏమిటి?
readonly ఫీల్డ్ డేటా సబ్మిట్ చేసినప్పుడు సర్వర్కు చేరుతుంది. కానీ disabled ఫీల్డ్ డేటాను బ్రౌజర్ సర్వర్కు పంపదు.
❓ ప్రశ్న 4: ఒక ఫైల్ అప్లోడ్ ఫీల్డ్లో కేవలం PDF ఫైల్స్ మాత్రమే అనుమతించాలంటే ఏ ఆట్రిబ్యూట్ వాడాలి?
accept=".pdf" లేదా accept="application/pdf".
❓ ప్రశ్న 5: type="color" ఎంచుకున్న రంగు విలువను ఏ ఫార్మాట్లో అందిస్తుంది?
#10b981).
పైన వివరించిన email, date, range, color, file, మరియు tel లతో కూడిన పూర్తి ఇంటరాక్టివ్ ఫారమ్ కోడ్ను మన ఆన్లైన్ ఎడిటర్లో ఓపెన్ చేసి మీరే స్వయంగా టెస్ట్ చేయండి!
📌 క్విక్ సారాంశం (Key Takeaways):
- నేటివ్ వాలిడేషన్:
emailమరియుurlజీరో జావాస్క్రిప్ట్ తో సింటాక్స్ తనిఖీ చేస్తాయి. - మొబైల్ కీబోర్డ్:
inputmode="numeric"మరియుtype="tel"యూజర్ ఎక్స్పీరియన్స్ను అద్భుతంగా మెరుగుపరుస్తాయి. - సంఖ్యలు & స్లైడర్లు:
min,max,stepలతోnumberమరియుrangeకంట్రోల్స్. - క్యాలెండర్లు:
type="date"మరియుtype="time"ద్వారా నేటివ్ పికర్స్. - ఫైల్స్ & కలర్స్:
type="file"తోaccept,multipleమరియుtype="color"తో హెక్స్ కలర్స్.