#|-------------------- 0.1 |# "./autoform-jquery.meta" 367
;;; autoform-jquery.meta -*- scheme -*-
((egg "autoform-jquery.egg")
(synopsis "JQuery-based Javascript validators for autoform")
(author "Mario Domenech Goulart")
(license "BSD")
(category web)
(depends autoform)
(files "autoform-jquery.setup" "autoform-jquery.meta" "autoform-jquery.scm"))
#|-------------------- 0.1 |# "./autoform-jquery.scm" 4755
(module autoform-jquery ()
(import chicken scheme data-structures)
(use srfi-1 autoform)
;;; Alert messages
(javascript-validation:int-only-message
"Only numbers are allowed for this field.")
(javascript-validation:float-only-message
"Only numbers, dot and comma characters are allowed for this field.")
(javascript-validation:date-format-message
(string-append "The format for date fields is " (date-fields-format)))
;;; Common javascript stuff
(javascript-validation:common
"
function isDigit (char) {
var digits ='0123456789';
return digits.indexOf(char) != -1;
}")
;;; Javascript validations
(javascript-validation:int
(string-append
"
function validateInteger (id) {
var elt = $('#' + id);
var v = elt.val();
var cur = v[v.length - 1];
if (!(isDigit(cur))) {
elt.val(v.substring(0, v.length - 1));
alert('" (javascript-validation:int-only-message) "');
}
}"))
(javascript-validation:float
(string-append
"
function validateFloat (id) {
var elt = $('#' + id);
var v = elt.val();
var cur = v[v.length - 1];
if (!((isDigit(cur) || cur == '.' || cur == ','))) {
elt.val(v.substring(0, v.length - 1));
alert('" (javascript-validation:float-only-message) "');
}
}"))
(javascript-validation:date ;; FIXME
(let ((slash-pos (filter-map (lambda (pos char)
(and (char=? #\/ char)
pos))
(iota (string-length (date-fields-format)))
(string->list (date-fields-format)))))
(string-append
"
function validateDate (id) {
var slash_pos = [" (string-intersperse (map ->string slash-pos) ", ") "];
var elt = $('#' + id);
var v = elt.val();
var pos = v.length-1;
var cur = v[pos];
if (((slash_pos.indexOf(pos) != -1) && (cur != '/')) ||
(slash_pos.indexOf(pos) == -1 && (!(isDigit(cur))))) {
alert('" (javascript-validation:date-format-message) "');
elt.val(v.substring(0, pos));
}
}")))
(javascript-validation:observer
(lambda (elt-id event action)
(conc "$('#" elt-id "').bind('"
(if (list event)
(string-intersperse (map ->string event) " ")
event)
"', " action ");")))
(javascript-validation:highlight-missing
"function (elt_id) { $('#' + elt_id + '_label').css('color', 'red'); }")
(javascript-validation:missing-message
"The highlighted missing fields must be filled.")
(javascript-validation:form-submit
(lambda (table fields)
(let ((mandatory (mandatory-fields fields)))
(conc
"
$('#" (form-id table) "').submit(function(){
var i;
var mandatory = [" (string-intersperse (map (cut conc "'" <> "'") mandatory) ", ") "];
var missing = [];
var current;
for(i=0; i