2016-04-27 3 views
3

Es scheint, dass das dynamische Hinzufügen von customValidity die Mustervalidierung unterbricht. Gibt es eine Möglichkeit, dieses Problem mit Javascript zu beheben?Google Chrome-Musterregex funktioniert nicht, wenn Formular dynamisch mit setCustomValidity erstellt wird

<html> 
<head> 
<title>Append validation issue</title> 
<script> 
function dothis(){ 
    var f = document.createElement("form"); 
    var i = document.createElement("input"); 
    i.type = "text"; 
    i.pattern = "[A-Z]{3}"; 
    i.setCustomValidity("watch me break"); 
    var s = document.createElement("input") 
    s.type = "submit"; 
    f.appendChild(i); 
    f.appendChild(s) 
    document.getElementById("core").appendChild(f); 
} 
</script> 
</head> 
<body> 
<div onclick="dothis()">click</div> 
<div id="core"></div> 
</body> 
</html> 
+3

"Es wird nicht passieren" ist recht vage. Was siehst du wirklich? – Malvolio

+0

Es wird weiterhin die Gültigkeitswarnung für den Benutzernamen angezeigt. die Standardaktion, um die Regex nicht zu übergeben. Ich habe auch mein Problem aktualisiert. – K3NN3TH

+0

können Sie uns den Code zeigen, der das Formular erstellt? Quoten liegen Ihr Problem irgendwo darin. – Jhecht

Antwort

3

setCustomValidity Mit den customErrorproperty auf true gesetzt, und damit wird das Element immer ungültig.

So sollten wir setCustomValidity verwenden, wenn der Text ungültig ist, und löschen, wenn gültig.

function dothis(){ 
    var f = document.createElement("form"); 
    var i = document.createElement("input"); 
    i.type = "text"; 
    i.pattern = "[A-Z]{3}"; 
    i.oninput = function() { 
     this.setCustomValidity(''); 
    } 
    i.oninvalid = function() { 
     this.setCustomValidity("watch me break"); 
    } 
    var s = document.createElement("input") 
    s.type = "submit"; 
    f.appendChild(i); 
    f.appendChild(s) 
    document.getElementById("core").appendChild(f); 
} 

https://jsfiddle.net/oL07go4s/

+0

Warum erwähnt niemand, dass wir 'setCustomValidity' löschen sollten? Ich habe so viel Zeit verschwendet ... Vielen Dank Kumpel. – NecipAllef

Verwandte Themen