2013-06-02 20 views
12

Chciałbym dwie różne wiadomości w dwóch polach, na przykład, nazwa użytkownika i hasło, które zawierają wiadomości typu "nazwa użytkownika nie może być pusta" i "hasło nie może być pusty". Udało mi się tylko zmienić wiadomość, ale jest ona taka sama dla obu pól. To hereJak zmienić domyślne "proszę wypełnić to pole" w dwóch polach

$(document).ready(function() { 
var elements = document.getElementsByTagName("INPUT"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].oninvalid = function(e) { 
     e.target.setCustomValidity(""); 
     if (!e.target.validity.valid) { 
      e.target.setCustomValidity("Username cannot be blank"); 
     } 
    }; 
    elements[i].oninput = function(e) { 
     e.target.setCustomValidity(""); 
    }; 
} }) 
+1

możliwy duplikat [wymaganego atrybutu formularza HTML5. Ustawić niestandardową wiadomość weryfikacyjną?] (Http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom- validation-message) –

Odpowiedz

14

Przepraszam, niektóre błędy w moim kodzie. Wypróbuj to, co działa:

$(document).ready(function() { 
var msg=""; 
var elements = document.getElementsByTagName("INPUT"); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].oninvalid =function(e) { 
     if (!e.target.validity.valid) { 
     switch(e.target.id){ 
      case 'password' : 
      e.target.setCustomValidity("Bad password");break; 
      case 'username' : 
      e.target.setCustomValidity("Username cannot be blank");break; 
     default : e.target.setCustomValidity("");break; 

     } 
     } 
    }; 
    elements[i].oninput = function(e) { 
     e.target.setCustomValidity(msg); 
    }; 
} 
}) 
+0

zamiast używać Switch, a co dopiero spróbować bezpośrednio odczytać właściwość data-xyz z tagu. – Adrian

0

zrobić pętlę na wszystkich elementów wejściowych, dlatego można uzyskać ten sam rezultat w każdym elemencie. Podać identyfikator do swojego wejścia na przykład nazwę użytkownika i hasło, a następnie spróbuj:

$(document).ready(function() { 
var msg=""; 
var elements = document.getElementsByTagName("INPUT"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].oninvalid = function(e) { 
     e.target.setCustomValidity(""); 

     switch(e.target.id){ 
      case "password" : 
      msg="Bad password"; 
      case "username" : 
      msg="Username cannot be blank"; 
     } 

     if (!e.target.validity.valid) { 
      e.target.setCustomValidity(msg); 
     } 
    }; 
    elements[i].oninput = function(e) { 
     e.target.setCustomValidity(""); 
    }; 
} }) 
+0

Scraaappy, kiedy wpisuję nazwę użytkownika i klikam Zaloguj się w polu hasła wiadomość to "Nazwa użytkownika nie może być pusta". – Godfather

+0

Czy możesz wysłać swój kompletny kod? czy wpisałeś poprawny identyfikator w polu wejściowym (tak jak napisał to Alex). Możesz umieścić alert w swoim kodzie JavaScript, aby zobaczyć, co się dzieje. 'alert ('target id:' + e.target.id);' – scraaappy

+0

Mój kompletny kod jest [tutaj] (http://jsfiddle.net/5fp4Y/7/). Kiedy wpisuję nazwę użytkownika i klikam Zaloguj się komunikat o polu hasła to "Nazwa użytkownika nie może być pusta – Godfather

3

Możesz dodać atrybut id zarówno nazwy użytkownika i hasła input elementy:

<input placeholder="Username" required id="username" /> 
<input type="password" placeholder="Password" required id="password" /> 

Następnie można użyć switch oświadczenie dodać niestandardowy komunikat walidacji zgodnie z celem imprezy:

$(document).ready(function() { 
    var elements = document.getElementsByTagName("INPUT"); 
    for (var i = 0; i < elements.length; i++) { 
     elements[i].oninvalid = function (e) { 
      e.target.setCustomValidity(""); 
      if (!e.target.validity.valid) { 
       switch (e.srcElement.id) { 
        case "username": 
         e.target.setCustomValidity("Username cannot be blank"); 
         break; 
        case "password": 
         e.target.setCustomValidity("Password cannot be blank"); 
         break; 
       } 
      } 
     }; 
     elements[i].oninput = function (e) { 
      e.target.setCustomValidity(""); 
     }; 
    } 
}) 

Here „sa demo.

+1

Alex, w twojej wersji demonstracyjnej, oba pola zawierają komunikat" Proszę wypełnić to pole " – Godfather

3

Możesz użyć tego kodu.

 
    <input type="text" required="" name="username" placeholder="Username" oninvalid="this.setCustomValidity('Username cannot be blank')"> 
    <input type="password" required="" name="password" placeholder="Password" oninvalid="this.setCustomValidity('Password cannot be blank')"> 
Powiązane problemy