Android Academy · पाठ

इनपुट का सत्यापन

इनपुट जाँचें और उपयोगी त्रुटियाँ दिखाएँ।

पाठ 3, कुल 4 में से13 चरण

इनपुट का सत्यापन, CoddyKit पर Android Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Android Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

इनपुट का सत्यापन क्यों करें

उपयोगकर्ता गलतियाँ करते हैं: खाली नाम, गलत प्रारूप वाला ईमेल या बहुत छोटा पासवर्ड। अच्छे फ़ॉर्म इन समस्याओं को जल्दी पकड़ते हैं और स्पष्ट रूप से बताते हैं कि क्या ठीक करना है।

इस पाठ में आप Compose फ़ॉर्म में सत्यापन जोड़ेंगे, फ़ील्ड के साथ त्रुटियाँ दिखाएँगे और सब कुछ मान्य होने तक सबमिट बटन को अक्षम रखेंगे।

सत्यापन नियम केवल एक फ़ंक्शन है

सत्यापन लॉजिक को साधारण Kotlin फ़ंक्शन के रूप में रखें, जो कोई मान ले और बताए कि वह मान्य है या नहीं (या कोई त्रुटि संदेश लौटाए)। इससे नियम दोबारा उपयोग करने योग्य और आसानी से परीक्षण योग्य बनते हैं।

यहाँ ईमेल जाँच का एक सरल उदाहरण है।

fun emailError(email: String): String? = when {
    email.isBlank() -> "Email is required"
    !email.contains("@") -> "Enter a valid email"
    else -> null
}

फ़ील्ड पर त्रुटि दिखाना

OutlinedTextField में isError फ़्लैग और supportingText स्लॉट होता है। इन्हें मिलाकर लाल फ़ील्ड और उसके नीचे संदेश दिखाएँ।

त्रुटि सीधे आपके सत्यापन फ़ंक्शन से आती है।

var email by remember { mutableStateOf("") }
val error = emailError(email)

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Email") },
    isError = error != null,
    supportingText = { if (error != null) Text(error) }
)

बहुत जल्दी चेतावनी न दें

उपयोगकर्ता के फ़ील्ड को छूने से पहले ही "ईमेल आवश्यक है" दिखाना अप्रिय लगता है। इसका सामान्य समाधान यह पता रखना है कि फ़ील्ड छुआ गया है या नहीं, और उसके बाद ही त्रुटियाँ दिखाना है।

यहाँ फ़ील्ड का फ़ोकस हटने पर उसे छुआ हुआ चिह्नित किया गया है।

var email by remember { mutableStateOf("") }
var touched by remember { mutableStateOf(false) }
val error = if (touched) emailError(email) else null

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Email") },
    isError = error != null,
    modifier = Modifier.onFocusChanged {
        if (!it.isFocused) touched = true
    }
)

पासवर्ड का सत्यापन

पासवर्ड पर आम तौर पर कई नियम लागू होते हैं। जो पहला नियम विफल हो, उसे लौटाएँ, ताकि उपयोगकर्ता एक बार में एक ही समस्या ठीक करे।

ध्यान दें कि यह अभी भी एक शुद्ध फ़ंक्शन है, इसमें कोई यूआई नहीं है।

fun passwordError(pw: String): String? = when {
    pw.length < 8 -> "At least 8 characters"
    pw.none { it.isDigit() } -> "Add a number"
    pw.none { it.isUpperCase() } -> "Add an uppercase letter"
    else -> null
}

फ़ील्डों के बीच सत्यापन

कुछ नियम दो फ़ील्डों पर निर्भर होते हैं, जैसे "पुष्टि किया गया पासवर्ड, पासवर्ड से मेल खाना चाहिए"। इन्हें किसी एकल-फ़ील्ड फ़ंक्शन में नहीं रखा जा सकता, इसलिए जहाँ दोनों मान उपलब्ध हों, वहीं इनकी गणना करें।

var password by remember { mutableStateOf("") }
var confirm by remember { mutableStateOf("") }

val confirmError =
    if (confirm.isNotEmpty() && confirm != password)
        "Passwords don't match"
    else null

मान्य होने तक सबमिट अक्षम रखना

जब हर नियम सफल हो, तभी पूरा फ़ॉर्म मान्य होता है। एकल बूलियन की गणना करें और उसका उपयोग सबमिट बटन को सक्षम या अक्षम करने के लिए करें।

इससे उपयोगकर्ता शुरुआत में ही गलत डेटा सबमिट नहीं कर पाता।

val formValid =
    emailError(email) == null &&
    passwordError(password) == null &&
    confirmError == null

Button(onClick = { submit() }, enabled = formValid) {
    Text("Create Account")
}

सबमिट करते समय सत्यापन

फ़ील्ड के साथ किया गया सत्यापन उपयोगकर्ता का मार्गदर्शन करता है, लेकिन सबमिट दबाने पर आपको हर चीज़ की दोबारा जाँच भी करनी चाहिए। सबमिट हैंडलर तय करता है कि आगे बढ़ना है या सभी त्रुटियाँ एक साथ दिखानी हैं।

fun onSubmit() {
    val errors = listOfNotNull(
        emailError(email),
        passwordError(password)
    )
    if (errors.isEmpty()) {
        register(email, password)
    } else {
        // show errors / mark fields touched
    }
}

टाइप किए जा सकने वाले इनपुट को सीमित करना

सत्यापन से समस्याओं को पहले ही रोका भी जा सकता है। फ़ोन नंबर के लिए, onValueChange के अंदर गैर-अंकीय वर्णों को अनदेखा कर दें, ताकि गलत इनपुट कभी स्थिति में पहुँचे ही नहीं।

बाद में उपयोगकर्ता को डाँटने की तुलना में यह अधिक सहज तरीका है।

var phone by remember { mutableStateOf("") }

OutlinedTextField(
    value = phone,
    onValueChange = { input ->
        phone = input.filter { it.isDigit() }.take(10)
    },
    label = { Text("Phone") }
)

ViewModel में सत्यापन को केंद्रीकृत करना

वास्तविक स्क्रीन के लिए सत्यापन ViewModel में रखें, ताकि यूआई केवल परिणाम दिखाए। ViewModel त्रुटियाँ और एक isValid फ़्लैग उपलब्ध कराता है।

इससे कंपोज़ेबल सरल बने रहते हैं और आपके नियम यूनिट-परीक्षण योग्य होते हैं।

class SignUpViewModel : ViewModel() {
    var email by mutableStateOf("")
        private set

    val emailError: String?
        get() = emailError(email)

    val isValid: Boolean
        get() = emailError == null && email.isNotBlank()

    fun onEmailChange(value: String) { email = value }
}

शुद्ध Kotlin: नियमों का परीक्षण

सत्यापनकर्ता शुद्ध फ़ंक्शन होते हैं, इसलिए आप उन्हें कहीं भी चला सकते हैं। यहाँ ईमेल और पासवर्ड नियम स्वतंत्र रूप से चलते हैं, ठीक वैसे ही जैसे कोई यूनिट परीक्षण उन्हें चलाता।

fun emailError(email: String): String? = when {
    email.isBlank() -> "Email is required"
    !email.contains("@") -> "Enter a valid email"
    else -> null
}

fun main() {
    println(emailError(""))
    println(emailError("nope"))
    println(emailError("ada@dev.io"))
}

त्वरित जाँच

किसी फ़ील्ड को अमान्य चिह्नित करने और उसके नीचे संदेश दिखाने के लिए OutlinedTextField की कौन-सी दो प्रॉपर्टी उपयोग की जाती हैं?

पुनरावलोकन

अब आप Compose फ़ॉर्म का साफ़-सुथरा सत्यापन कर सकते हैं:

  • नियमों को ऐसे शुद्ध फ़ंक्शन के रूप में रखें जो त्रुटि संदेश या null लौटाएँ।
  • isError + supportingText से त्रुटियाँ दिखाएँ और फ़ील्ड छुए जाने से पहले चेतावनी देने से बचें।
  • जहाँ दोनों मान दिखाई देते हों, वहाँ फ़ील्डों के बीच के नियम सँभालें।
  • पूरा फ़ॉर्म मान्य होने तक सबमिट अक्षम रखें और सबमिट पर दोबारा जाँच करें।
  • filter से गलत इनपुट रोकें और नियमों को ViewModel में केंद्रीकृत करें।

अगला विषय: कीबोर्ड प्रकार, IME क्रियाएँ और फ़ोकस प्रबंधन।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
36
पाठ
152

अक्सर पूछे जाने वाले प्रश्न

क्या “इनपुट का सत्यापन” पाठ निःशुल्क है?

हाँ — Android Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “इनपुट का सत्यापन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“इनपुट का सत्यापन” में मैं क्या सीखूँगा?

इनपुट जाँचें और उपयोगी त्रुटियाँ दिखाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Android Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Android Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Android Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“इनपुट का सत्यापन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Android Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Android Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. TextField और उपयोगकर्ता इनपुट
  2. फ़ॉर्म स्थिति प्रबंधित करना
  3. इनपुट का सत्यापन
  4. कीबोर्ड विकल्प और क्रियाएँ
← Android Academy पर वापस जाएँ