|
ulf-wendel.de   
|
|
 Home < PHP Schulung  < OOH Forms  < JavaScript  < JS-Codevariante II    |       |  
Print Version    
---
|
|
 Home 
 PHP Projekte 
 PHP Schulung 
    Informationsquellen 
    Geschichte 
    Core PHP 
    Fortgeschrittenes PHP 
    Templates 
    Cache-Technologien 
    OOH Forms 
       Grundlagen 
       JavaScript 
          Aktivierung 
          Validierungstypen 
          JS-Codevariante I 
          JS-Codevariante II 
          JS_README 
          Custom Validators 
          Custom Validators II 
       XML 
       Layoutmanager 
       Pages 
       Wizards 
       Fazit 
 Technik der Site 
 Büchertipps 
 Fotografie 
 Airbrush 
 Kontakt 
 Stuff 

Code für komplexe Validierungen

Der komplexe JavaScript Code bietet eine API für Custom-Validators. Die API weicht etwas von der PHP API für Custom-Validators ab.

Im Verzeichnis "HTML_OOH_Form/js/" befindet sich die Datei "JS_README", die einen ersten Einblick in die Details der JavaScript Programmierung gibt.


Komplexer JavaScript Code Top

<?php
 
require_once('HTML_OOH_Form/form.php');
 
define('FORM_FILE_DIR'$DOCUMENT_ROOT '/projekte/');
 
 
// alle File-Funktionen in den OOH-Forms benutzen die Konstante 
 // FORM_FILE_DIR
 
$code implode(''file(FORM_FILE_DIR 'HTML_OOH_Form/js/form_js_complex.js'));
 
$code preg_replace('/\t/''  '$code);
 
 
printf("Komplexer Code [%d Bytes]:\n\n%s\n\n"
        
strlen($code),
        
$code
      
);

  
// private void compressJS(string $js) demonstrieren
  
$code form::compressJS($code);
  
printf("Komprimiert [%d Bytes]:\n\n%s",
          
strlen($code),
          
$code
       
);
?>
Ausgabe Top
Komplexer Code [2717 Bytes]:

function form(name, els, gv, val) {
  this.name = name;
  this.els = els;
  this.gv = gv;
  this.val = val;
  this.err = [];
  this.errc = [];
  this.p = "";
};
new form;

form.prototype.validate = function() {

  var e = f = m = "";
  var i, el, vd, j, vl, c, l, a, d, n, t, s, x, k;
  x = this;
  n = x.name;
  a = arguments;
  x.errc = [];
  x.err = [];

  d = x.val;
  for (i = 0; i < d.length; i++)
    eval(d[i] + "(x);");

  d = x.els;
  for (i = 0; i < d.length; i += 3) {
    el = x.els[i];

    if (a.length && a[0] != x.p + el)
      continue;

    x.err[i] = "";
    vd = d[i + 1];
    t = x.get_value(x, el);
    vl = t[0];  
    s = t[1];
    j = 0;

    while (j < vd.length) {

      c = vd[j];
      l = vl.length;
      j += 4;
      
      if ("l" == c && x.val_ev(el, "l") && (l < vd[j - 3] || (-1 != vd[j - 2] && l > vd[j - 2])))
        x.err[i] += vd[j - 1] + "\n";

      if ("r" == c && x.val_ev(el, "r") && -1 == vl.search(new RegExp(vd[j - 3], vd[j - 2])))
        x.err[i] += vd[j - 1] + "\n";

      if ("i" == c && x.val_ev(el, "i") && -1 != vl.search(new RegExp(vd[j - 3])))
        x.err[i] += vd[j-- - 2] + "\n";

    }

    m = x.err.join("");
    
    if (!a.length)
      for (k = 0; k < x.errc.length; k++)
        m += x.errc[k][1];
    else
      for (k = 0; k < x.errc.length; k++)
        if (x.errc[k][0] == x.p + a[0]) {
          m += x.errc[k][1];
          break;
        }
    
    if (!f && m)
      f = (s) ? s : x.p + el;
  }

  if (m) {
    alert("" + m + "");
    document.forms[n].elements[f].focus();
    return false;
  }
  return true;
};

form.prototype.set_err = function(e, m) {
  this.errc[this.errc.length] = [e, m + "\n"];
};

form.prototype.get_value = function (f, el) {
  var g, i;
  g = f.gv;
  for (i = 0; i < g.length; i+= 2)
    if (g[i] == el)
      return eval(g[i +1] + "('" + f.name + "', '" + this.p + el + "');");

  return [document.forms[f.name].elements[this.p + el].value, ""];
};

form.prototype.val_on = function (el, events) {
  for (var i = 0; i < this.els.length; i += 3) 
    if (el == this.els[i])
      this.els[i + 2] += events;
};

form.prototype.val_off = function (el, events) {
  for (var i = 0; i < this.els.length; i += 3)
    if (el == this.els[i])
      this.els[i + 2] = this.els[i + 2].replace(new RegExp("[" + events + "]", "g"), "");
};

form.prototype.val_ev = function (el, events) {
  for (var i = 0; i < this.els.length; i += 3)
    if (el == this.els[i])
      return (-1 != this.els[i + 2].search(new RegExp("[" + events + "]","g"))) ? true : false;
};

Komprimiert [1865 Bytes]:

function form(name,els,gv,val){this.name=name;this.els=els;
this.gv=gv;this.val=val;this.err=[];this.errc=[];this.p="";
};new form;form.prototype.validate=function(){var e=f=m="";
var i,el,vd,j,vl,c,l,a,d,n,t,s,x,k;x=this;n=x.name;a=arguments;
x.errc=[];x.err=[];d=x.val;for(i=0;ivd[j-2])))
x.err[i]+=vd[j-1]+"\n";if("r"==c&&x.val_ev(el,"r")&&-1==vl.search(new RegExp(vd[j-3],vd[j-2])))
x.err[i]+=vd[j-1]+"\n";if("i"==c&&x.val_ev(el,"i")&&-1!=vl.search(new RegExp(vd[j-3])))
x.err[i]+=vd[j---2]+"\n";}m=x.err.join("");if(!a.length)for(k=0;k

<  ^  >

 Neues

 XML/XSLT Menu
 OOH-Form Rewrite

 PEAR Cache:
  SHM Container

 Suchstring Parser
 Buchrezensionen
 PEAR Cache:
  OutputCompression

 PEAR Menu Browser
 PEAR Menu Tutorial 
 PEAR Cache


 Tipp

Download Version:
oben rechts,
Download *.tar.gz
|
| --- |
|
  Top   |   <  ^  >   |   phpOpenTracker Statistik   |   URL: http://www.ulf-wendel.de/schulung/ooh/js/code2.php   |   Stand: 16.11.2001   |   © Ulf Wendel   
|
| --- |

0.030 s Bearbeitungszeit, 0.002 s IT[X], 0.005 s Menu 3