Sie können dies selbst mit setCustomValidity()
implementieren. Auf diese Weise antwortet this.checkValidity()
die Regel, die Sie auf Ihr Element anwenden möchten. Ich glaube nicht, this.validity.patternMismatch
kann manuell festgelegt werden, aber Sie könnten stattdessen Ihre eigene Eigenschaft verwenden, falls erforderlich.
http://jsfiddle.net/yanndinendal/jbtRU/22/
$('#test').keyup(validateTextarea);
function validateTextarea() {
var errorMsg = "Please match the format requested.";
var textarea = this;
var pattern = new RegExp('^' + $(textarea).attr('pattern') + '$');
// check each line of text
$.each($(this).val().split("\n"), function() {
// check if the line matches the pattern
var hasError = !this.match(pattern);
if (typeof textarea.setCustomValidity === 'function') {
textarea.setCustomValidity(hasError ? errorMsg : '');
} else {
// Not supported by the browser, fallback to manual error display...
$(textarea).toggleClass('error', !!hasError);
$(textarea).toggleClass('ok', !hasError);
if (hasError) {
$(textarea).attr('title', errorMsg);
} else {
$(textarea).removeAttr('title');
}
}
return !hasError;
});
}
scheint [ 'textarea' nicht das' pattern' Attribut hat] (https: // developer.mozilla.org/en-US/docs/HTML/HTML_Elements/textarea?redirectlocale=en-US&redirectslug=HTML%2Felement%2Ftextarea), so dass die Wahrscheinlichkeit, dass Browser dies ignorieren, sehr hoch ist. – Passerby