ወደ ዋናው ይዘት ዝለል ወደ ሰነዶች ዳሰሳ ዝለል
Check
in English

ማረጋገጫ

በ HTML5 ቅጽ ማረጋገጫ፣ በአሳሽ ነባሪ ባህሪያት ወይም በብጁ ቅጦች እና ጃቫስክሪፕት ለተጠቃሚዎችዎ ጠቃሚ፣ ተግባራዊ ምላሽ ይስጡ።

በአሁኑ ጊዜ የደንበኛ-ጎን ብጁ የማረጋገጫ ቅጦች እና የመሳሪያ ምክሮች ለረዳት ቴክኖሎጂዎች የተጋለጡ ስላልሆኑ ተደራሽ እንዳልሆኑ እናውቃለን። በመፍትሔው ላይ በምንሠራበት ጊዜ፣ የአገልጋይ ወገን አማራጭን ወይም ነባሪውን የአሳሽ ማረጋገጫ ዘዴን እንዲጠቀሙ እንመክራለን።

እንዴት እንደሚሰራ

የቅጽ ማረጋገጫ ከBootstrap ጋር እንዴት እንደሚሰራ እነሆ፡-

  • የኤችቲኤምኤል ቅጽ ማረጋገጫ በ CSS ሁለት አስመሳይ ክፍሎች በኩል ይተገበራል፣ :invalidእና :valid. የሚመለከተው በ <input><select>እና <textarea>አባሎች ላይ ነው።
  • ቡትስትራፕ የወላጅ ክፍልን :invalidእና ቅጦችን ይሸፍናል፣ ብዙውን ጊዜ በ . ያለበለዚያ፣ ዋጋ የሌለው ማንኛውም አስፈላጊ መስክ በገጽ ጭነት ላይ ልክ ያልሆነ ሆኖ ይታያል። በዚህ መንገድ እነሱን መቼ እንደሚያነቃቁ መምረጥ ይችላሉ (በተለምዶ ቅጹን ለማስገባት ከተሞከረ በኋላ)።:valid.was-validated<form>
  • የቅጹን ገጽታ እንደገና ለማስጀመር (ለምሳሌ AJAX ን በመጠቀም በተለዋዋጭ ቅፅ ማስረከቢያ) ፣ ካስረከቡ በኋላ .was-validatedክፍሉን <form>እንደገና ያስወግዱት።
  • እንደ ውድቀት፣ .is-invalidእና ክፍሎች ከአገልጋይ ጎን ማረጋገጫ.is-valid ከሐሰት-ክፍሎች ይልቅ ጥቅም ላይ ሊውሉ ይችላሉ ። የወላጅ ክፍል አያስፈልጋቸውም ።.was-validated
  • <label>በሲኤስኤስ አሰራር ላይ ባሉ ገደቦች ምክንያት በብጁ ጃቫ ስክሪፕት ሳይታገዝ በDOM ውስጥ ከቅጽ ቁጥጥር በፊት የሚመጣውን ቅጦች (በአሁኑ ጊዜ) መተግበር አንችልም ።
  • ሁሉም ዘመናዊ አሳሾች የቅጽ መቆጣጠሪያዎችን ለማረጋገጥ ተከታታይ የጃቫ ስክሪፕት ዘዴዎችን የገደብ ማረጋገጫውን ይደግፋሉ ።
  • የግብረመልስ መልእክቶች የአሳሹን ነባሪዎች (ለእያንዳንዱ አሳሽ የተለየ እና በ CSS በኩል የማይሰራ) ወይም የእኛን ብጁ የግብረመልስ ስልቶች ከተጨማሪ HTML እና CSS ጋር ሊጠቀሙ ይችላሉ።
  • ብጁ ተቀባይነት ያላቸው መልዕክቶችን setCustomValidityበጃቫ ስክሪፕት ማቅረብ ይችላሉ።

ያንን በአእምሯችን ይዘን፣ ለብጁ የቅጽ ማረጋገጫ ስልቶቻችን፣ አማራጭ የአገልጋይ ክፍል ክፍሎች እና የአሳሽ ነባሪዎች የሚከተሉትን ማሳያዎች አስቡባቸው።

ብጁ ቅጦች

ለብጁ የ Bootstrap ቅጽ ማረጋገጫ መልእክቶች novalidateየቦሊያንን ባህሪ ወደ እርስዎ ማከል ያስፈልግዎታል <form>። ይህ የአሳሹን ነባሪ የግብረመልስ መሳሪያ ምክሮችን ያሰናክላል፣ነገር ግን አሁንም በጃቫስክሪፕት የቅጽ ማረጋገጫ ኤፒአይዎችን መዳረሻ ይሰጣል። ከታች ያለውን ቅጽ ለማስገባት ይሞክሩ; የእኛ ጃቫ ስክሪፕት የማስረከቢያ አዝራሩን ያጠለፈ እና ግብረመልስ ያቀርብልዎታል። ለማስገባት ሲሞክሩ በቅጽ መቆጣጠሪያዎችዎ ላይ የተተገበሩትን :invalidእና ቅጦችን ያያሉ ።:valid

ብጁ የግብረመልስ ቅጦች ግብረመልስን በተሻለ መልኩ ለማስተላለፍ ብጁ ቀለሞችን፣ ድንበሮችን፣ የትኩረት ቅጦችን እና የበስተጀርባ አዶዎችን ይተገበራሉ። የበስተጀርባ አዶዎች ለ <select>ዎች ብቻ ይገኛሉ .form-select፣ ግን አይደሉም .form-control

ጥሩ ይመስላል!
ጥሩ ይመስላል!
@
እባክዎ የተጠቃሚ ስም ይምረጡ።
እባክዎ ትክክለኛ ከተማ ያቅርቡ።
እባክዎ የሚሰራ ሁኔታ ይምረጡ።
እባክዎ ትክክለኛ ዚፕ ያቅርቡ።
ከማቅረቡ በፊት መስማማት አለቦት።
html
<form class="row g-3 needs-validation" novalidate>
  <div class="col-md-4">
    <label for="validationCustom01" class="form-label">First name</label>
    <input type="text" class="form-control" id="validationCustom01" value="Mark" required>
    <div class="valid-feedback">
      Looks good!
    </div>
  </div>
  <div class="col-md-4">
    <label for="validationCustom02" class="form-label">Last name</label>
    <input type="text" class="form-control" id="validationCustom02" value="Otto" required>
    <div class="valid-feedback">
      Looks good!
    </div>
  </div>
  <div class="col-md-4">
    <label for="validationCustomUsername" class="form-label">Username</label>
    <div class="input-group has-validation">
      <span class="input-group-text" id="inputGroupPrepend">@</span>
      <input type="text" class="form-control" id="validationCustomUsername" aria-describedby="inputGroupPrepend" required>
      <div class="invalid-feedback">
        Please choose a username.
      </div>
    </div>
  </div>
  <div class="col-md-6">
    <label for="validationCustom03" class="form-label">City</label>
    <input type="text" class="form-control" id="validationCustom03" required>
    <div class="invalid-feedback">
      Please provide a valid city.
    </div>
  </div>
  <div class="col-md-3">
    <label for="validationCustom04" class="form-label">State</label>
    <select class="form-select" id="validationCustom04" required>
      <option selected disabled value="">Choose...</option>
      <option>...</option>
    </select>
    <div class="invalid-feedback">
      Please select a valid state.
    </div>
  </div>
  <div class="col-md-3">
    <label for="validationCustom05" class="form-label">Zip</label>
    <input type="text" class="form-control" id="validationCustom05" required>
    <div class="invalid-feedback">
      Please provide a valid zip.
    </div>
  </div>
  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" value="" id="invalidCheck" required>
      <label class="form-check-label" for="invalidCheck">
        Agree to terms and conditions
      </label>
      <div class="invalid-feedback">
        You must agree before submitting.
      </div>
    </div>
  </div>
  <div class="col-12">
    <button class="btn btn-primary" type="submit">Submit form</button>
  </div>
</form>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(() => {
  'use strict'

  // Fetch all the forms we want to apply custom Bootstrap validation styles to
  const forms = document.querySelectorAll('.needs-validation')

  // Loop over them and prevent submission
  Array.from(forms).forEach(form => {
    form.addEventListener('submit', event => {
      if (!form.checkValidity()) {
        event.preventDefault()
        event.stopPropagation()
      }

      form.classList.add('was-validated')
    }, false)
  })
})()

የአሳሽ ነባሪዎች

የቅጽ ባህሪያትን ለመለወጥ ብጁ የማረጋገጫ ግብረመልስ መልዕክቶችን ወይም ጃቫ ስክሪፕትን ለመጻፍ ፍላጎት የለዎትም? ሁሉም ጥሩ, የአሳሽ ነባሪዎችን መጠቀም ይችላሉ. ከታች ያለውን ቅጽ ለማስገባት ይሞክሩ። በአሳሽዎ እና በስርዓተ ክወናዎ ላይ በመመስረት ትንሽ የተለየ የአስተያየት ዘይቤ ያያሉ።

እነዚህ የአስተያየት ስልቶች በሲኤስኤስ ሊቀረጹ ባይችሉም፣ አሁንም በጃቫስክሪፕት የአስተያየት ጽሑፉን ማበጀት ይችላሉ።

@
html
<form class="row g-3">
  <div class="col-md-4">
    <label for="validationDefault01" class="form-label">First name</label>
    <input type="text" class="form-control" id="validationDefault01" value="Mark" required>
  </div>
  <div class="col-md-4">
    <label for="validationDefault02" class="form-label">Last name</label>
    <input type="text" class="form-control" id="validationDefault02" value="Otto" required>
  </div>
  <div class="col-md-4">
    <label for="validationDefaultUsername" class="form-label">Username</label>
    <div class="input-group">
      <span class="input-group-text" id="inputGroupPrepend2">@</span>
      <input type="text" class="form-control" id="validationDefaultUsername"  aria-describedby="inputGroupPrepend2" required>
    </div>
  </div>
  <div class="col-md-6">
    <label for="validationDefault03" class="form-label">City</label>
    <input type="text" class="form-control" id="validationDefault03" required>
  </div>
  <div class="col-md-3">
    <label for="validationDefault04" class="form-label">State</label>
    <select class="form-select" id="validationDefault04" required>
      <option selected disabled value="">Choose...</option>
      <option>...</option>
    </select>
  </div>
  <div class="col-md-3">
    <label for="validationDefault05" class="form-label">Zip</label>
    <input type="text" class="form-control" id="validationDefault05" required>
  </div>
  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" value="" id="invalidCheck2" required>
      <label class="form-check-label" for="invalidCheck2">
        Agree to terms and conditions
      </label>
    </div>
  </div>
  <div class="col-12">
    <button class="btn btn-primary" type="submit">Submit form</button>
  </div>
</form>

የአገልጋይ ጎን

የደንበኛ-ጎን ማረጋገጫን እንዲጠቀሙ እንመክራለን፣ ነገር ግን የአገልጋይ ወገን ማረጋገጫ ከፈለጉ፣ ልክ ያልሆኑ እና ትክክለኛ የሆኑ የቅጽ መስኮችን በ .is-invalidእና .is-valid. .invalid-feedbackበእነዚህ ክፍሎችም የሚደገፍ መሆኑን ልብ ይበሉ ።

ልክ ላልሆኑ መስኮች፣ ልክ ያልሆነው የግብረመልስ/የስህተት መልዕክቱ ከተገቢው የቅጽ መስክ ጋር መገናኘቱን ያረጋግጡ aria-describedby(ይህ አይነታ ከአንድ በላይ እንዲጣቀስ የሚፈቅድ መሆኑን በመጥቀስ id፣ መስኩ አስቀድሞ ተጨማሪ የቅጽ ጽሑፍን የሚያመለክት ከሆነ)።

ከድንበር ራዲየስ ጋር ያሉ ችግሮችን ለማስተካከል የግቤት ቡድኖች ተጨማሪ .has-validationክፍል ያስፈልጋቸዋል።

ጥሩ ይመስላል!
ጥሩ ይመስላል!
@
እባክዎ የተጠቃሚ ስም ይምረጡ።
እባክዎ ትክክለኛ ከተማ ያቅርቡ።
እባክዎ የሚሰራ ሁኔታ ይምረጡ።
እባክዎ ትክክለኛ ዚፕ ያቅርቡ።
ከማቅረቡ በፊት መስማማት አለቦት።
html
<form class="row g-3">
  <div class="col-md-4">
    <label for="validationServer01" class="form-label">First name</label>
    <input type="text" class="form-control is-valid" id="validationServer01" value="Mark" required>
    <div class="valid-feedback">
      Looks good!
    </div>
  </div>
  <div class="col-md-4">
    <label for="validationServer02" class="form-label">Last name</label>
    <input type="text" class="form-control is-valid" id="validationServer02" value="Otto" required>
    <div class="valid-feedback">
      Looks good!
    </div>
  </div>
  <div class="col-md-4">
    <label for="validationServerUsername" class="form-label">Username</label>
    <div class="input-group has-validation">
      <span class="input-group-text" id="inputGroupPrepend3">@</span>
      <input type="text" class="form-control is-invalid" id="validationServerUsername" aria-describedby="inputGroupPrepend3 validationServerUsernameFeedback" required>
      <div id="validationServerUsernameFeedback" class="invalid-feedback">
        Please choose a username.
      </div>
    </div>
  </div>
  <div class="col-md-6">
    <label for="validationServer03" class="form-label">City</label>
    <input type="text" class="form-control is-invalid" id="validationServer03" aria-describedby="validationServer03Feedback" required>
    <div id="validationServer03Feedback" class="invalid-feedback">
      Please provide a valid city.
    </div>
  </div>
  <div class="col-md-3">
    <label for="validationServer04" class="form-label">State</label>
    <select class="form-select is-invalid" id="validationServer04" aria-describedby="validationServer04Feedback" required>
      <option selected disabled value="">Choose...</option>
      <option>...</option>
    </select>
    <div id="validationServer04Feedback" class="invalid-feedback">
      Please select a valid state.
    </div>
  </div>
  <div class="col-md-3">
    <label for="validationServer05" class="form-label">Zip</label>
    <input type="text" class="form-control is-invalid" id="validationServer05" aria-describedby="validationServer05Feedback" required>
    <div id="validationServer05Feedback" class="invalid-feedback">
      Please provide a valid zip.
    </div>
  </div>
  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input is-invalid" type="checkbox" value="" id="invalidCheck3" aria-describedby="invalidCheck3Feedback" required>
      <label class="form-check-label" for="invalidCheck3">
        Agree to terms and conditions
      </label>
      <div id="invalidCheck3Feedback" class="invalid-feedback">
        You must agree before submitting.
      </div>
    </div>
  </div>
  <div class="col-12">
    <button class="btn btn-primary" type="submit">Submit form</button>
  </div>
</form>

የሚደገፉ አካላት

የማረጋገጫ ቅጦች ለሚከተሉት የቅጽ መቆጣጠሪያዎች እና አካላት ይገኛሉ፡-

  • <input>s እና <textarea>s ጋር ( በግቤት ቡድኖች ውስጥ .form-controlእስከ አንድ ጨምሮ ).form-control
  • <select>ጋር.form-select
  • .form-checkኤስ
እባክህ መልእክት በቴክስት አከባቢው አስገባ።
ምሳሌ ልክ ያልሆነ የግብረመልስ ጽሑፍ
ተጨማሪ ምሳሌ ልክ ያልሆነ የግብረመልስ ጽሑፍ
ምሳሌ ልክ ያልሆነ ግብረመልስ ይምረጡ
ምሳሌ ልክ ያልሆነ ቅጽ ፋይል ግብረመልስ
html
<form class="was-validated">
  <div class="mb-3">
    <label for="validationTextarea" class="form-label">Textarea</label>
    <textarea class="form-control" id="validationTextarea" placeholder="Required example textarea" required></textarea>
    <div class="invalid-feedback">
      Please enter a message in the textarea.
    </div>
  </div>

  <div class="form-check mb-3">
    <input type="checkbox" class="form-check-input" id="validationFormCheck1" required>
    <label class="form-check-label" for="validationFormCheck1">Check this checkbox</label>
    <div class="invalid-feedback">Example invalid feedback text</div>
  </div>

  <div class="form-check">
    <input type="radio" class="form-check-input" id="validationFormCheck2" name="radio-stacked" required>
    <label class="form-check-label" for="validationFormCheck2">Toggle this radio</label>
  </div>
  <div class="form-check mb-3">
    <input type="radio" class="form-check-input" id="validationFormCheck3" name="radio-stacked" required>
    <label class="form-check-label" for="validationFormCheck3">Or toggle this other radio</label>
    <div class="invalid-feedback">More example invalid feedback text</div>
  </div>

  <div class="mb-3">
    <select class="form-select" required aria-label="select example">
      <option value="">Open this select menu</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
    <div class="invalid-feedback">Example invalid select feedback</div>
  </div>

  <div class="mb-3">
    <input type="file" class="form-control" aria-label="file example" required>
    <div class="invalid-feedback">Example invalid form file feedback</div>
  </div>

  <div class="mb-3">
    <button class="btn btn-primary" type="submit" disabled>Submit form</button>
  </div>
</form>

የመሳሪያ ምክሮች

የቅጽ አቀማመጥህ የሚፈቅድ ከሆነ የማረጋገጫ ግብረመልስን በቅጥ በተዘጋጀ የመሳሪያ ጥቆማ ለማሳየት ክፍሎቹን ለክፍሎች .{valid|invalid}-feedbackመለዋወጥ ትችላለህ። ለመሳሪያ ምክር አቀማመጥ በእሱ ላይ .{valid|invalid}-tooltipወላጅ እንዳለዎት እርግጠኛ ይሁኑ ። position: relativeከዚህ በታች ባለው ምሳሌ ውስጥ የእኛ የአምድ ክፍሎች ይህ ቀድሞውኑ አላቸው ፣ ግን የእርስዎ ፕሮጀክት አማራጭ ማዋቀር ሊፈልግ ይችላል።

ጥሩ ይመስላል!
ጥሩ ይመስላል!
@
እባክዎ ልዩ እና የሚሰራ የተጠቃሚ ስም ይምረጡ።
እባክዎ ትክክለኛ ከተማ ያቅርቡ።
እባክዎ የሚሰራ ሁኔታ ይምረጡ።
እባክዎ ትክክለኛ ዚፕ ያቅርቡ።
html
<form class="row g-3 needs-validation" novalidate>
  <div class="col-md-4 position-relative">
    <label for="validationTooltip01" class="form-label">First name</label>
    <input type="text" class="form-control" id="validationTooltip01" value="Mark" required>
    <div class="valid-tooltip">
      Looks good!
    </div>
  </div>
  <div class="col-md-4 position-relative">
    <label for="validationTooltip02" class="form-label">Last name</label>
    <input type="text" class="form-control" id="validationTooltip02" value="Otto" required>
    <div class="valid-tooltip">
      Looks good!
    </div>
  </div>
  <div class="col-md-4 position-relative">
    <label for="validationTooltipUsername" class="form-label">Username</label>
    <div class="input-group has-validation">
      <span class="input-group-text" id="validationTooltipUsernamePrepend">@</span>
      <input type="text" class="form-control" id="validationTooltipUsername" aria-describedby="validationTooltipUsernamePrepend" required>
      <div class="invalid-tooltip">
        Please choose a unique and valid username.
      </div>
    </div>
  </div>
  <div class="col-md-6 position-relative">
    <label for="validationTooltip03" class="form-label">City</label>
    <input type="text" class="form-control" id="validationTooltip03" required>
    <div class="invalid-tooltip">
      Please provide a valid city.
    </div>
  </div>
  <div class="col-md-3 position-relative">
    <label for="validationTooltip04" class="form-label">State</label>
    <select class="form-select" id="validationTooltip04" required>
      <option selected disabled value="">Choose...</option>
      <option>...</option>
    </select>
    <div class="invalid-tooltip">
      Please select a valid state.
    </div>
  </div>
  <div class="col-md-3 position-relative">
    <label for="validationTooltip05" class="form-label">Zip</label>
    <input type="text" class="form-control" id="validationTooltip05" required>
    <div class="invalid-tooltip">
      Please provide a valid zip.
    </div>
  </div>
  <div class="col-12">
    <button class="btn btn-primary" type="submit">Submit form</button>
  </div>
</form>

ሳስ

ተለዋዋጮች

$form-feedback-margin-top:          $form-text-margin-top;
$form-feedback-font-size:           $form-text-font-size;
$form-feedback-font-style:          $form-text-font-style;
$form-feedback-valid-color:         $success;
$form-feedback-invalid-color:       $danger;

$form-feedback-icon-valid-color:    $form-feedback-valid-color;
$form-feedback-icon-valid:          url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>");
$form-feedback-icon-invalid-color:  $form-feedback-invalid-color;
$form-feedback-icon-invalid:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>");

ቅልቅል

በቅጽ የማረጋገጫ ግብረመልስ ቅጦችን ለመፍጠር ሁለት ድብልቆች በአንድ ላይ ተጣምረዋል፣በእኛ loop በኩል።

@mixin form-validation-state-selector($state) {
  @if ($state == "valid" or $state == "invalid") {
    .was-validated #{if(&, "&", "")}:#{$state},
    #{if(&, "&", "")}.is-#{$state} {
      @content;
    }
  } @else {
    #{if(&, "&", "")}.is-#{$state} {
      @content;
    }
  }
}

@mixin form-validation-state(
  $state,
  $color,
  $icon,
  $tooltip-color: color-contrast($color),
  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
) {
  .#{$state}-feedback {
    display: none;
    width: 100%;
    margin-top: $form-feedback-margin-top;
    @include font-size($form-feedback-font-size);
    font-style: $form-feedback-font-style;
    color: $color;
  }

  .#{$state}-tooltip {
    position: absolute;
    top: 100%;
    z-index: 5;
    display: none;
    max-width: 100%; // Contain to parent when possible
    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
    margin-top: .1rem;
    @include font-size($form-feedback-tooltip-font-size);
    line-height: $form-feedback-tooltip-line-height;
    color: $tooltip-color;
    background-color: $tooltip-bg-color;
    @include border-radius($form-feedback-tooltip-border-radius);
  }

  @include form-validation-state-selector($state) {
    ~ .#{$state}-feedback,
    ~ .#{$state}-tooltip {
      display: block;
    }
  }

  .form-control {
    @include form-validation-state-selector($state) {
      border-color: $color;

      @if $enable-validation-icons {
        padding-right: $input-height-inner;
        background-image: escape-svg($icon);
        background-repeat: no-repeat;
        background-position: right $input-height-inner-quarter center;
        background-size: $input-height-inner-half $input-height-inner-half;
      }

      &:focus {
        border-color: $color;
        box-shadow: $focus-box-shadow;
      }
    }
  }

  // stylelint-disable-next-line selector-no-qualifying-type
  textarea.form-control {
    @include form-validation-state-selector($state) {
      @if $enable-validation-icons {
        padding-right: $input-height-inner;
        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
      }
    }
  }

  .form-select {
    @include form-validation-state-selector($state) {
      border-color: $color;

      @if $enable-validation-icons {
        &:not([multiple]):not([size]),
        &:not([multiple])[size="1"] {
          padding-right: $form-select-feedback-icon-padding-end;
          background-image: escape-svg($form-select-indicator), escape-svg($icon);
          background-position: $form-select-bg-position, $form-select-feedback-icon-position;
          background-size: $form-select-bg-size, $form-select-feedback-icon-size;
        }
      }

      &:focus {
        border-color: $color;
        box-shadow: $focus-box-shadow;
      }
    }
  }

  .form-control-color {
    @include form-validation-state-selector($state) {
      @if $enable-validation-icons {
        width: add($form-color-width, $input-height-inner);
      }
    }
  }

  .form-check-input {
    @include form-validation-state-selector($state) {
      border-color: $color;

      &:checked {
        background-color: $color;
      }

      &:focus {
        box-shadow: $focus-box-shadow;
      }

      ~ .form-check-label {
        color: $color;
      }
    }
  }
  .form-check-inline .form-check-input {
    ~ .#{$state}-feedback {
      margin-left: .5em;
    }
  }

  .input-group {
    > .form-control:not(:focus),
    > .form-select:not(:focus),
    > .form-floating:not(:focus-within) {
      @include form-validation-state-selector($state) {
        @if $state == "valid" {
          z-index: 3;
        } @else if $state == "invalid" {
          z-index: 4;
        }
      }
    }
  }
}

ካርታ

ይህ የ Sass ካርታ ማረጋገጫው ከ ነው _variables.scss። የተለያዩ ወይም ተጨማሪ ግዛቶችን ለመፍጠር ይህንን ይሽሩት ወይም ያራዝሙ።

$form-validation-states: (
  "valid": (
    "color": $form-feedback-valid-color,
    "icon": $form-feedback-icon-valid
  ),
  "invalid": (
    "color": $form-feedback-invalid-color,
    "icon": $form-feedback-icon-invalid
  )
);

የካርታ ካርታዎች $form-validation-statesየመሳሪያ ምክሮችን እና የትኩረት ቅጦችን ለመሻር ሶስት አማራጭ መለኪያዎችን ሊይዝ ይችላል።

ሉፕ

$form-validation-statesየማረጋገጫ ስልቶቻችንን ለመፍጠር በካርታ ዋጋዎች ላይ ለመድገም ይጠቅማል ። ከላይ ባለው የ Sass ካርታ ላይ የተደረጉ ማሻሻያዎች በዚህ loop በኩል በተጠናቀረዎት CSS ውስጥ ይንጸባረቃሉ።

@each $state, $data in $form-validation-states {
  @include form-validation-state($state, $data...);
}

ማበጀት

$form-validation-statesየማረጋገጫ ግዛቶች በካርታው በ Sass በኩል ሊበጁ ይችላሉ ። በእኛ _variables.scssፋይል ውስጥ የሚገኘው ይህ የሳስ ካርታ ነባሪውን valid/ invalidየማረጋገጫ ሁኔታዎችን የምናመነጭበት መንገድ ነው። የእያንዳንዱን ግዛት ቀለም፣ አዶ፣ የመሳሪያ ጫፍ ቀለም እና የትኩረት ጥላ ለማበጀት የተከማቸ ካርታ ተካትቷል። ምንም ሌሎች ግዛቶች በአሳሾች የማይደገፉ ቢሆኑም፣ ብጁ ቅጦችን የሚጠቀሙ በቀላሉ የበለጠ የተወሳሰበ የቅጽ ግብረመልስ ማከል ይችላሉ።