/* # check.js - simple application to check numbers # # Copyright (C) 2017-2020 Arthur de Jong. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA */ $(document).ready(function () { function format(value) { return $('
').text(value).html().replace( /\n\n/g, '
\n' ).replace( /^[*] (.*)$/gm, '' ).replace( /(\b(https?|ftp):\/\/[^\s<]*[-\w+&@#/%=~_|])/ig, "$1" ) } function updateresults(field, results) { // build HTML to present var h = ['') // replace the results div $('#' + $(field).attr('id') + '_results').html(h.join('')) } function checkfield(field) { var value = field.val() // only trigger update if value changed from previous validation if (value !== field.data('oldvalue')) { field.data('oldvalue', value) $('#' + $(field).attr('id') + '_results').slideUp(200, function () { $.get('.', {number: value}, function (data) { window.history.pushState({value: value, data: data}, $(document).find('title').text(), '?number=' + encodeURIComponent(value)) updateresults(field, data) }) $(this).slideDown(300) }) } } // update results based on history navigation window.onpopstate = function (e) { var field = $('.stdnum_check') if (e.state) { var value = e.state.value var data = e.state.data field.val(value) field.data('oldvalue', value) updateresults(field, data) } else { field.val('') field.data('oldvalue', '') updateresults(field, []) } } // trigger a check when user stopped typing $('.stdnum_check').on('input propertychange', function (event) { if (window.event && event.type === 'propertychange' && event.propertyName !== 'value') { return } var field = $(this) window.clearTimeout($(this).data('timeout')) $(this).data('timeout', setTimeout(function () { checkfield(field) }, 2000)) }) // trigger a check when losing focus $('.stdnum_check').on('blur', function () { window.clearTimeout($(this).data('timeout')) checkfield($(this)) }) // prevent enter from submitting the form $('.stdnum_check').keydown(function (event) { if (event.keyCode === 13) { event.preventDefault() checkfield($(this)) return false } }) // hide the submit button $('.stdnum_hide').hide() // focus the text field $('.stdnum_check').focus() // save current state var value = $('.stdnum_check').val() $('.stdnum_check').data('oldvalue', value) $.get('', {number: value}, function (data) { window.history.replaceState({value: value, data: data}, $(document).find('title').text(), '?number=' + encodeURIComponent(value)) }) })