taohi 100: Script fuer dumis

Beitrag lesen

Guten Abend zusammen,

nun habe ich endlich ein Skript gefunden, das u.a. die moeglichkeit vor sieht die Gueltigkeit bei Auswahlfeldern zu pruefen... (Das heisst, eher ob es ausgewaehlt wurde oder nicht. Da ich einen Haufen Auswahlfelder habe, macht das Sinn fuer mich.

Kann mir vielleicht jemand den Teil isolieren der nur die Auswahlfelder betrifft, so dass er eigenstaendig lauffaehig ist ?

<script langugage="JavaScript">
<!--
/**
* Common Form Checking
* **********************************
* a 'small' lib for checking common form-objects.
*
*  - checks textinputs/textareas if empty
*  - checks if valid mail address was entered
*  - checks for clicked radios and checked boxes
*  - checks if options are selected.
*
* it should run on nearly every modern javascript browser ;)
* feel free to change/optimize the code.
* if you do so, please send me an email with your version of this script:
* webmaster@php-projekte.de
*
* sorry for my bad (de)nglish ;)
*
* thanks!
*
* Markus 'beebob' Bopp, Updated: 09/16/2002
* ***********************************
* usage:
*
* en:
*  - create a form with the name 'form1'.
*  - the first option of a select elements has to be empty (<option></option>) if it has to be checked.
*  - at the moment there's just one email-field checked for a valid entry. this field needs the name 'email'.
*  - if all textfields have to be checked -> var textNoCheck = true;
*  - if no textfield mustn't be checked   -> var textNoCheck = "";
*  - ... otherwise -> var textNoCheck = "formElement!='name1' && formElement!='name2' ...; usw."
*
* de:
*  - die form muss den namen 'form1' erhalten.
*  - die erste option eines select elements muss leer sein (<option></option>), falls hier geprüft werden soll.
*  - mom. wird nur ein feld auf eine korrekte email überprüft. dieses feld muss den namen 'email' erhalten.
*  - falls alle textfelder geprüft werden sollen -> var textNoCheck = true;
*  - falls gar kein textfeld geprüft werden soll -> var textNoCheck = "";
*  - ... ansonsten -> var textNoCheck = "formElement!='name1' && formElement!='name2' ...; usw."
*/

textNoCheck = "formElementName!='nocheck1' && formElementName!='nocheck2'";

/**
* en: if set to false, just the textfields and textareas are checked!
* de: falls auf false gesetzt wird, werden ausschl. textfelder und
textareas geprüft!
*/

withSubCheck = true;

/**
* en: error messages
* de: fehlermeldungen
*/

missingText   = "Sie haben vergessen, ein Feld auszufüllen!\n\nDieses Feld wurde besonders gekennzeichnet.\n\nBitte tragen sie dort den fehlenden Inhalt ein!";
missingMail   = "Sie haben keine gültige E-Mail Adresse eingetragen!";
missingRadio  = "Sie haben vergessen, ein Radio auszuwählen!";
missingCheck  = "Sie haben vergessen, eine Checkbox auszuwählen!";
missingOption = "Sie haben vergessen, einen Eintrag aus der Auswahlliste zu wählen!";

/**
* en: some text, showed in elements on error
* de: text, der in den elementen bei einem fehler erscheint
*/

missing  = "*fehlt*"; // text
newEntry = "*neu eingeben*"; // email
choose   = "*auswahl*"; // select-options

/** functions */

function checkForm(){
    formElementsCount = document.form1.elements.length;
    for(i=0; i<formElementsCount; i++){
        formElementName = document.form1.elements[i].name;
        if(eval(textNoCheck)){
            formElement = document.form1.elements[i];
            if(formElement.value=="" || formElement.value==missing){
                if(formElement.type=="text" || formElement.type=="textarea"){
                    alert(missingText);
                    formElement.focus();
                    if(document.all || document.getElementById){
                        formElement.blur();
                        formElement.value=missing;
                        formElement.onclick = clean;
                    }
                    return false;
                }
            }
        }
    }
    if(withSubCheck)
        return startSubCheck();
}

function checkMailAddress(){
    dofem = document.form1.email
    expression = /.+@.+.{1,}[a-zA-Z]{2,}/;
    if(!expression.exec(dofem.value)){
        alert(missingMail);
        dofem.focus();
            if(document.all || document.getElementById){
                dofem.blur();
                dofem.value = newEntry;
                dofem.onclick = clean;
            }
        return false;
    }
}

function checkRadioButtons(){
    var formElementsCount     = document.form1.elements.length;
    var sortedNames           = new Array();
    var sortedNamesNext       = new Array();
    for(i=0; i<formElementsCount; i++){
        if(document.form1.elements[i].type=="radio"){
            sortedNames[i] = document.form1.elements[i].name;
            if(document.form1.elements[i+1]!=null){
                sortedNamesNext[i] = document.form1.elements[i+1].name;
            }
            // there are just groups up to two related radios allowed at the moment ...
            if(sortedNames[i]==sortedNamesNext[i]){
                if(document.form1.elements[i].checked==false && document.form1.elements[i+1].checked==false){
                    sortedNames[i] = sortedNames[i].toUpperCase();
                    alert(missingRadio);
                    return false;
                }
            }
        }
    }
}

function checkCheckboxes(){
    var formElementsCount     = document.form1.elements.length;
    var sortedNames           = new Array();
    for(i=0; i<formElementsCount; i++){
        if(document.form1.elements[i].type=="checkbox"){
            sortedNames[i] = document.form1.elements[i].name;
            if(document.form1.elements[i].checked==false){
                    sortedNames[i] = sortedNames[i].toUpperCase();
                    alert(missingCheck);
                    return false;
            }
        }
    }
}

function checkOptions(){
    var formElementsCount = document.form1.elements.length;
    for(i=0; i<formElementsCount; i++){
        if(document.form1.elements[i].type=="select-one"){
            selectedIndex = document.form1.elements[i].options.selectedIndex;

if(document.form1.elements[i].options[selectedIndex].text=="" ||
document.form1.elements[i].options[selectedIndex].text==choose){
                document.form1.elements[i].focus();

document.form1.elements[i].options[selectedIndex].text=choose;
                alert(missingOption);
                return false;
            }
        }
    }
}

function clean(){
    this.value="";
}

function startSubCheck(){
    cm = checkMailAddress();
    if(cm==false){
        return false;
    }else{
        cr = checkRadioButtons();
        if(cr==false){
            return false;
        }else{
            co = checkOptions();
            if(co==false){
                return false;
            }else{
                cb = checkCheckboxes();
                if(cb==false){
                    return false;
                }
            }
        }
    }
}
//-->
</script>

<!-- en: activate checking by using the onsubmit event handler ('return'
is a must!) -->
<!-- de: die prüfungen werden per onsubmit event-handler gestartet
('return' ist pflicht!) -->

<form name="form1" action="#" onsubmit="return checkForm();">
<br>
  input:<br>
  <input type="text" name="poop"><br>
  kein check (1):<br>
  <input type="text" name="nocheck1"><br>
  keine check2 (2):<br>
  <input type="text" name="nocheck2"><br>
  email check:<br>
  <input type="text" name="email"><br>
  select check:<br>
  <select
name="poop2"><option></option><option>poop</option></select><br>
  radio check:<br>
  nein <input type="radio" name="poop3" value="0"><br>
  ja   <input type="radio" name="poop3" value="1"><br>
  textarea:<br>
  <textarea name="poop4"></textarea><br>
  checkbox:<br>
  <input type="checkbox" name="poop5" value="0"><br>
  <input type="submit">
</form>