33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
((function(){
|
|
if (!Element.prototype.matches) {
|
|
Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
|
|
}
|
|
var findAncestor = function(el, selector) {
|
|
while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el, selector))) {}
|
|
return el;
|
|
};
|
|
|
|
var fields = document.querySelectorAll('input[name="searchfield"][data-search-input]');
|
|
Array.prototype.forEach.call(fields, function(field) {
|
|
var form = findAncestor(field, 'form[data-simplesearch-form]'),
|
|
min = field.getAttribute('data-min') || false,
|
|
location = field.getAttribute('data-search-input'),
|
|
separator = field.getAttribute('data-search-separator');
|
|
|
|
if (min) {
|
|
var invalid = field.getAttribute('data-search-invalid');
|
|
field.addEventListener('keydown', function() {
|
|
field.setCustomValidity(field.value.length >= min ? '' : invalid);
|
|
});
|
|
}
|
|
|
|
form.addEventListener('submit', function(event) {
|
|
event.preventDefault();
|
|
|
|
if (field.checkValidity()) {
|
|
window.location.href = location + separator + field.value;
|
|
}
|
|
});
|
|
});
|
|
})());
|