So nutzen Sie eigene Javascript-Funktionen zum Validieren

Nutzbar ab: Version

Dieser Artikel beschreibt, wie Sie innerhalb der Bearbeitung eigene JS-Funktionen einsetzen können.

Weblication® bietet über das Text-Pflegetag-Attribut validator="" die Möglichkeit, das Feld beim Speichern bzw. Neuladen der Bearbeitung auf einen gültigen Wert zu prüfen. So kann z.B. das Titel-Feld dahingehend geprüft werden, ob das Feld leer ist oder nicht (validator="required"), also als Pflichtfeld innerhalb der Bearbeitung definiert werden.

Ab Version 005.039.003.000 können Sie über das Attribut auch eigene Javascript-Funktionen zum Prüfen des Feldinhaltes verwenden.
Eigene Validatoren im Editor können zudem mit einem Parameter versehen werden, der nach dem zu validierenden Element als zweiter Parameter an die eigene Funktion übergeben wird (siehe nachfolgendes Beispiel).

Beispiel 1: Auszug aus einem XSLT-Template mit eigener Validierung

...
<!--web:text:start editor="input" inputStyle="width:100%;" validator="checkInputField({from: 0, to: 100})" errorMessage=""--><value-of select="/wd:document/wd:extension/wd:meta/wd:title/text()"/><!--web:text:stop-->
...
<if test="$wIsInEditor">
<!-- Definition einer Javascript-Funktion für die Feldvalidierung im Editor -->
<script type="text/javascript">
  function checkInputField(elementToValidate, validateParameters){
    if(elementToValidate.value > validateParameters['from'] && elementToValidate.value < validateParameters['to']){
      return true;
    }
    else{
      return false;
    }
  }
</script>
</if>

Ab CMS-Version 008.004.100.000 lassen sich bei eigenen Validatoren für Pflege-Tags auch beliebige Optionen als Zahl oder Zeichenkette an eine JavaScript-Funktion mitgeben. Im nachfolgenden Beispiel wird das Textfeld z.B. auf einen bestimmten Begriff geprüft, der im Text nicht vorkommen darf. Ist das Wort "verdammt" im Textfeld vorhanden, so wird beim Speichern der Seite über den Validator darauf hingewiesen, daß die Eingabe nicht erlaubt ist. Mehrere Begriffe trennen Sie mit einem Pipe-Zeichen (siehe Beispiel).

Beispiel 2: Auszug aus einem XSLT-Template (z.B. text.custom.wItem.php) mit eigener Validierung

...
  <xsl:template match="wd:item[@type = 'test.standard']" wChecksum="e54dd13124f96a97ebc876ed79aa0dcb">

  <div style="margin:10px">
    <!--web:text:start editor="input" inputStyle="width:100%;" validator="checkInputField({word: 'verdammt|verflixt'})" errorMessage="Die Eingabe enthält nicht erlaubte Wörter!"--><xsl:value-of select="wd:fragment[@id='text']/text()"/><!--web:text:stop-->
    
    <script type="text/javascript">
    
      function checkInputField(elementToValidate, validateParameters){
   
        var inputFieldValue = elementToValidate.value.toLowerCase();
        var paramToValidate = validateParameters['word'];
     
        // wenn auf mehrere Begriffe geprüft werden soll:
        validatorRegExp = new RegExp(paramToValidate);
        if(validatorRegExp.test(inputFieldValue)){
          return false;
        }
        else{
          return true;
        }
      }    
    </script>
  </div>
  </xsl:template> 
...