simplesearch.js 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. ((function(){
  2. if (!Element.prototype.matches) {
  3. Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
  4. }
  5. var findAncestor = function(el, selector) {
  6. while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el, selector))) {}
  7. return el;
  8. };
  9. var fields = document.querySelectorAll('input[name="searchfield"][data-search-input]');
  10. Array.prototype.forEach.call(fields, function(field) {
  11. var form = findAncestor(field, 'form[data-simplesearch-form]'),
  12. min = field.getAttribute('min') || false,
  13. location = field.getAttribute('data-search-input'),
  14. separator = field.getAttribute('data-search-separator');
  15. if (min) {
  16. var invalid = field.getAttribute('data-search-invalid');
  17. field.addEventListener('keydown', function() {
  18. field.setCustomValidity(field.value.length >= min ? '' : invalid);
  19. });
  20. }
  21. form.addEventListener('submit', function(event) {
  22. event.preventDefault();
  23. if (field.checkValidity()) {
  24. window.location.href = location + separator + field.value;
  25. }
  26. });
  27. });
  28. })());