2012-04-28 12 views
118

Ad esempio, ho un textfield. Il campo è obbligatorio, solo i numeri sono necessari e la lunghezza del valore deve essere 10. Quando cerco di presentare il modulo con un valore la cui lunghezza è 5, viene visualizzato il messaggio di errore predefinito: Please match the requested formatCome posso modificare o rimuovere i messaggi di errore predefiniti di convalida del modulo HTML5?

<input type="text" required="" pattern="[0-9]{10}" value=""> 
  1. Come posso cambiare Messaggi di errore di validazione del modulo HTML 5 predefiniti?
  2. Se è possibile eseguire il primo punto, esiste un modo per creare alcuni file di proprietà e impostare in tali file messaggi di errore personalizzati?
+1

Ho trovato un bug su Mahoor13 risposta, non funziona in loop quindi l'ho risolto e dare una risposta con qualche correzione, che puoi trovare sotto la sezione di risposta. ** Ecco il link ** http://stackoverflow.com/questions/10361460/how-can-i-change-or-remove-html5-form-validation-default-error-messages/42430173#42430173 –

risposta

181

Ho trovato un bug su Ankur risposta e ho risolto il tutto con questa correzione:

<input type="text" pattern="[a-zA-Z]+" 
    oninvalid="setCustomValidity('Plz enter on Alphabets ')" 
    onchange="try{setCustomValidity('')}catch(e){}" /> 

Il bug visto quando si imposta un dato di input non validi, quindi correggere l'input e inviare il modulo. oops! non puoi farlo ho testato su Firefox e Chrome

+15

Suggerisco di non utilizzare eventi in linea. Non è una buona pratica. – Jared

+2

@ Mahoor13 L'ho scritto in modo simile a questo, ma non è mai stato convalidato. Puoi darmi un suggerimento? http://jsfiddle.net/2USxy/ – Sliq

+0

html5 la convalida del modulo ha bisogno dei browser moderni vedi questa pagina: http://diveintohtml5.info/forms.html – Mahoor13

30
<input type="text" pattern="[a-zA-Z]+" 
oninvalid="setCustomValidity('Plz enter on Alphabets ')" /> 

Ho trovato questo codice in un altro post.

+0

grazie, ha funzionato per me. Anche se non ho trovato post o blog o sito che menzionassi questo. – user219628

+0

Prendere nota del seguente post quando si considera l'utilizzo di setCustomValitidy https://stackoverflow.com/questions/16867407/html5-why-does-my-oninvalid-attribute-let-the-pattern-fail –

76

Quando si utilizza pattern = verrà visualizzato ciò che si mette nel titolo attrib, quindi non JS richiesti solo fare:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" /> 
+8

Risposta molto bella. Ma come con tutte le cose HTML5, l'affidabilità dipende dal browser. Questa soluzione ha funzionato benissimo con FF 15 e Chrome 22, ma non con Safari 5. (Testato con OS X Lion) –

+1

Bella risposta, ma fai attenzione alla compatibilità arretrata (o addirittura attuale) qui. – bohney

+6

Quando imposto un titolo su "foo" ottengo "Si prega di abbinare il formato richiesto foo", quindi questo non funzionerà per me – Daan

3

Il setCustomValidity permettono di modificare l'impostazione predefinita messaggio di convalida. Ecco un semplice esempio su come usarlo.

var age = document.getElementById('age'); 
    age.form.onsubmit = function() { 
    age.setCustomValidity("This is not a valid age."); 
}; 
10

HTML:

<input type="text" pattern="[0-9]{10}" oninvalid="InvalidMsg(this);" name="email" oninput="InvalidMsg(this);" /> 

JavaScript:

function InvalidMsg(textbox) { 

    if(textbox.validity.patternMismatch){ 
     textbox.setCustomValidity('please enter 10 numeric value.'); 
    }  
    else { 
     textbox.setCustomValidity(''); 
    } 
    return true; 
} 

Fiddle Demo

11

è possibile rimuovere questo avviso facendo seguente:

<input type="text" pattern="[a-zA-Z]+" 
    oninvalid="setCustomValidity(' ')" 
/> 

Basta impostare il messaggio personalizzato ad uno spazio vuoto

12

Per evitare che il messaggio di convalida del browser di apparire nel documento, con jQuery:

$('input, select, textarea').on("invalid", function(e) { 
    e.preventDefault(); 
}); 
1

ho trovato un modo Accidentally Ora: si può avere bisogno di utilizzare questo: dati di errore: ""

<input type="username" class="form-control" name="username" value="" 
placeholder="the least 4 character" 
data-minlength="4" data-minlength-error="the least 4 character" 
data-error="This is a custom Errot Text fot patern and fill blank" 
max-length="15" pattern="[A-Za-z0-9]{4,}" 
title="4~15 character" required/> 
1

Come si può vedere qui:

html5 oninvalid doesn't work after fixed the input field

è buona per voi Metti in questo modo, perché quando correggi l'errore sparisci il messaggio di avviso.

<input type="text" pattern="[a-zA-Z]+" 
oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')" /> 
2

Ho trovato un bug su Mahoor13 risposta, non funziona in ciclo in modo ho risolto con la correzione:

HTML:

<input type="email" id="eid" name="email_field" oninput="check(this)"> 

Javascript:

function check(input) { 
    if(input.validity.typeMismatch){ 
     input.setCustomValidity("Dude '" + input.value + "' is not a valid email. Enter something nice!!"); 
    } 
    else { 
     input.setCustomValidity(""); 
    }     
} 

Sarà pe perfettamente funzionante.

0

Questo è un lavoro per me in Chrome

<input type="text" name="product_title" class="form-control" 
required placeholder="Product Name" value="" pattern="([A-z0-9À-ž\s]){2,}" 
oninvalid="setCustomValidity('Please enter on Producut Name at least 2 characters long')" 
Problemi correlati