• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

error inputa - zmienianie wyglądu errora

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
296 wizyt
pytanie zadane 2 czerwca w HTML i CSS przez niezalogowany
witam odrazu mówie.  error to dla mnie mamy input type='email' i wpisze  np mistmest342 ale nie dodam @gmail.com i wyskacza wtedy taki error ze brakuje czesci po @ i własnie teraz ogladam 7 odc kursu html i zaciekawiło mnie jak zmienic wygląd takiego errora

2 odpowiedzi

+3 głosów
odpowiedź 2 czerwca przez Comandeer Guru (606,240 p.)
wybrane 2 czerwca
 
Najlepsza
Nie da się. Jak chcesz customowy wygląd błędów, to musisz zrobić customową walidację.
komentarz 2 czerwca przez niezalogowany
tyle fajnych znaczników a sie nie da.....
komentarz 3 czerwca przez Panelinio Stary wyjadacz (10,450 p.)

Wszystko się da - wystarczy chcieć i wiedzieć gdzie grzebać wink

komentarz 3 czerwca przez niezalogowany
no teoretycznie jak sie zmotywuje to zawsze mozna zrobic nowy jezyk dla tych errorów ....
komentarz 3 czerwca przez niezalogowany
choc zamiast jezyka przeglądarkan by≤a by do tego zadania lepsza
1
komentarz 3 czerwca przez Comandeer Guru (606,240 p.)
Zawsze można napisać nowy język tylko po to, żeby stworzyć w nim przeglądarkę.

Tylko po co, skoro można wziąć jedną z setek bibliotek JS, które ogarniają walidację naprawdę dobrze? Część z nich nawet korzysta z ficzerów HTML5.
komentarz 3 czerwca przez niezalogowany
dla satysfakcji oczywiscie
1
komentarz 3 czerwca przez Comandeer Guru (606,240 p.)
Uwierz mi, że pisanie własnej przeglądarki nawet nie leży przy satysfakcji ^^
komentarz 3 czerwca przez niezalogowany
mówiąc o satysfakcji mam na mysli satysfakcje tego ze to zrobiło sie i jak . z tego mozna miec satysfakcje
0 głosów
odpowiedź 3 czerwca przez VBService Ekspert (256,320 p.)
edycja 3 czerwca przez VBService

W pewnym sensie możesz wpłynąć nieco na treść komunikatów walidacji natywnej.

Sprawdź:

  • validity property  [ 1 ]  [ 2 ]  [ 3 ]  [ 4 ]

  • checkValidity method  [ 1 ]  [ 2 ]  [ 3 ]

  • setCustomValidity

    <input type="number" 
           min="100" 
           max="200"
           step="0.5"
           maxlength="2"
           required
           oninput="reset(this)">
    <button onclick="test()">OK</button>
    
    <ul>
      <li>Naciśnij OK - gdy puste pole</li>
      <li>Wpisz sam znak minus "-" lub plus "+" lub kropka "." - Naciśnij OK</li>
      <li>Wpisz wartość mniejszą od 100 - Naciśnij OK</li>
      <li>Wpisz wartość większą od 200 - Naciśnij OK</li>
      <li>Wpisz wartość 100.55 - Naciśnij OK</li>
    </ul>
    
    <script>
      function reset(input) {
        input.setCustomValidity('');    
      }
      function test() {
        const input = document.querySelector('input');
        input.setCustomValidity('');
    
        if (input.value.trim() == '') {
          input.setCustomValidity('Mist, to pole nie może być puste');
          input.reportValidity();
          return;      
        }
        if (input.validity.rangeOverflow) { // (value > 200) 
          input.setCustomValidity('Mist, wartość nie może być większa niż 200');
          input.reportValidity();
          return;
        } 
        if (input.validity.rangeUnderflow) { // (value < 100)
          input.setCustomValidity('Mist, wartość nie może być mniejsza niż 100');
          input.reportValidity();
          return;      
        }
        if (input.validity.stepMismatch) {
          input.setCustomValidity('Mist, prawidłowa wartość to wielokrotność 0.5');
          input.reportValidity();
          return;      
        }    
      }
    </script>
    
    <style>
      input:valid {
        background-color: green;
      }
      input:invalid {
        background-color: red;
        color: white;
      }
    </style>

     

 

 

 

BTW,

sprawdź:

<input type="number" 
	   min="100" 
       max="200"
       step="0.5"
       maxlength="2"
       required>
<button onclick="test()">OK</button>

<ul>
  <li>Naciśnij OK - gdy puste pole</li>
  <li>Wpisz sam znak minus "-" lub plus "+" lub kropka "." - Naciśnij OK</li>
  <li>Wpisz wartość mniejszą od 100 - Naciśnij OK</li>
  <li>Wpisz wartość większą od 200 - Naciśnij OK</li>
  <li>Wpisz wartość 100.55 - Naciśnij OK</li>
</ul>

<p id="validation-message"></p>

<script>
  function test() {
    const input_ = document.querySelector('input'),
          validation_message = document.querySelector('#validation-message');
        
    if (!input_.checkValidity()) {
      validation_message.textContent = input_.validationMessage;
      return;
    } else {
      validation_message.textContent = '';
    }
  } 
</script>

<style>
  #validation-message:not(:empty) {
    width: 50%;
    padding: .25rem;
  }
  input:valid {
  	background-color: green;
  }
  input:not(:valid), /* input:invalid */
  input:not(:valid) ~ #validation-message {
    background-color: red;
    color: white;
  }
</style>

 

<form action="/submit" method="post">
  <label for="email">Email:</label>
  <input type="text" id="email" name="email">
  <output id="email-validity"></output>
  <button type="submit">Submit</button>
</form>

<script>
  const form_ = document.querySelector('form')
  form_.addEventListener('submit', (e) => {
    e.preventDefault();

    const email_input = form_.querySelector('#email'),
          email_validity = form_.querySelector('#email-validity');

    email_validity.textContent = '';
    email_input.value = email_input.value.trim();

    if (email_input.value == '') {
      email_validity.textContent = 'Mist, pole nie może być puste';
      return;
    }
    if (!email_input.value.includes('@')) {
      email_validity.textContent = 'Mist, adres nie zawiera znaku @';
      return;
    }
    if (!/^[a-z0-9]/i.test(email_input.value)) {
      email_validity.textContent = 'Mist, pierwszy znak adresu jest niedozwolony.';
      return;      
    }
    if (!/^([a-z0-9._]{2,})/i.test(email_input.value)) {
      email_validity.textContent = 'Mist, adres zawiera mniej znaków niż 2';
      return;           
    }
    if (!/^([a-z0-9._]{2,})\@([a-z0-9-_]{1,})/i.test(email_input.value)) {
      email_validity.textContent = 'Mist, adres nie zawiera nazwy domeny';
      return;           
    }
    if (!/^([a-z0-9._]{2,})\@([a-z0-9.-_]{2,})\.[a-z]{2,}$/i.test(email_input.value)) {
      email_validity.textContent = 'Mist, w nazwie domeny brak rozszeżenia TLD (np: .pl, .com itp.)';
      return;           
    }

    // Wypisze inny komunikat błedu (natywny) jeżeli takowy zaistnieje, który dotyczy
    // danego pola type="typ pola", który nie został opisany wyżej w kodzie
    if (!email_input.checkValidity) {
      email_validity.textContent = email_input.validationMessage;
      return;
    } else {
      // wszystko w porządku
      form_.submit();
    }
  });
</script>

<style>
  input + output {
    display: block;
  }
  output {
    font: 700 .8rem/1 system-ui, monospace, sans-serif;
    color: orangered;
    padding: .5rem 0 0 6.5ch;
  }
  button {
    margin-top: 1rem;
  }
</style>

 

i na koniec sprawdź: 

komentarz 3 czerwca przez niezalogowany
dzieki

Podobne pytania

0 głosów
2 odpowiedzi 1,914 wizyt
pytanie zadane 14 października 2016 w HTML i CSS przez Rafik Obywatel (1,870 p.)
0 głosów
2 odpowiedzi 1,351 wizyt
pytanie zadane 21 lipca 2020 w HTML i CSS przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 736 wizyt
pytanie zadane 14 maja 2020 w HTML i CSS przez poldeeek Mądrala (5,980 p.)

93,174 zapytań

142,185 odpowiedzi

321,971 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...