2
var validateForm = (function() {
var options = {};
var classError = 'error';
var showFieldValidation = function(input, inputIsValid) {
if (!inputIsValid) {
if (!input.parentNode.className || input.parentNode.className.indexOf(options.classError) == -1) {
input.parentNode.className += ' ' + options.classError
}
} else {
var regError = new RegExp('(\\s|^)' + options.classError + '(\\s|$)');
input.parentNode.className = input.parentNode.className.replace(regError, '');
}
};
var testInputText = function(input) {
var fieldHasError = false;
var mailReg = new RegExp('^[0-9a-zA-Z_.-]', 'gi');
if (!mailReg.test(input.value)) {
showFieldValidation(input, false);
return false;
} else {
showFieldValidation(input, true);
return true;
}
};;
var prepareElements = function() {
var elements = options.form.querySelectorAll('input[required]');
[].forEach.call(elements, function(element) {
element.removeAttribute('required');
element.className += ' required';
if (element.nodeName.toUpperCase() == 'INPUT') {
var type = element.type.toUpperCase();
if (type == 'TEXT') {
element.addEventListener('keyup', function() {
testInputText(element)
});
element.addEventListener('blur', function() {
testInputText(element)
});
}
}
});
};
var formSubmit = function() {
options.form.addEventListener('submit', function(e) {
e.preventDefault();
var validated = true;
//pobieramy wszystkie pola, którym wcześniej ustawiliśmy klasę .required
var elements = options.form.querySelectorAll('.required');
//podobne działanie już robiliśmy przy przygotowywaniu pól
[].forEach.call(elements, function(element) {
if (element.nodeName.toUpperCase() == 'INPUT') {
var type = element.type.toUpperCase();
if (type == 'TEXT') {
if (!testInputText(element)) validated = false;
}
}
});
if (validated) {
this.submit();
} else {
return false;
}
});
};
var init = function(_options) {
//do naszego modulu bedziemy przekazywac opcje
options = {
form: _options.form || null,
classError: _options.classError || 'error'
}
if (options.form == null || options.form == undefined || options.form.length == 0) {
console.warn('validateForm: bad form');
return false;
}
prepareElements();
formSubmit();
};
return {
init: init
}
})();
document.addEventListener("DOMContentLoaded", function() {
var form = document.querySelector('.form');
validateForm.init({
form: form
})
});
input[type=text].as_tags_in_l67:focus {
outline-style: none;
}
.form .error input[type=text] {
color: #DB083E;
border-color: #DB083E;
box-shadow: 0 0 2px 2px red;
}
<form class="form">
<div class="ask_con_area67">
<div id="til_bo_x43">
<label class="til_l67">Title</label>
<input class="til_l67_text" type="text" autocomplete="off" required/>
</div>
</div>
</form>
こんにちは、 は、私は、例えば次の入力にいくつかのテキストを表示するために自分のコードを変更することができますどのように一つの質問を持っています'分5文字を追加する必要があります'?検証ではmin-lengthを5文字、100文字でmax-lengthを追加する方法は?
属性?たとえば、5つのスペース文字? 2つの 'data-min-length'属性の目的は何ですか? – guest271314
いいえ、javascriptコードはスペースを挿入することができません、データ - 長さの削除、私は様々な方法をテストし、それを忘れて:) –