/* # check.js - simple application to check numbers # # Copyright (C) 2017 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").slideUp("quick", function() { $(this).html(h.join("")); $(this).slideDown("quick"); }); } 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); $.get('', {"number": value}, function(data) { window.history.pushState({"value": value, "data": data}, $(document).find("title").text(), "?number=" + encodeURIComponent(value)); updateresults(field, data); }); } } // 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)); }) });