taohi 100: Script fuer dumis

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>

  1. Du bist hier möglicherweise auf dem falschen Forum. Das hier ist das "wie komme ich auf die richtigen Ideen, um selbst eine Lösung zu finden"-Forum, nicht das "Kann mir mal einer die fertige Lösung schicken"-Forum.

    Falls Dir jedoch die Ideen reichen, sind hier diejenigen, die Du brauchst, um Dein Ziel zu erreichen:

    • Das Absenden von Formularen kann man unterbinden, indem man im onsubmit-Attribut des form-Tags bspw. durch eine Funktion "false" zurückgibt.

    • wenn man im onsubmit-Attribut eines form-Tags den Parameter "this" (nicht den String, sondern den Konstruktor) übergibt, bekommt die Funktion einen Verweis auf das Form-Tag (als hätte man es mit document.getElementById selektiert).

    • Lese Dir den Abschnitt über <http://de.selfhtml.org/javascript/objekte/htmlelemente.htm#select@title=Select-Felder und JavaScript> durch.

    • falls Du noch nicht weißt, wie man HTML-Elemente in JavaScript anspricht, lese den Abschnitt über http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName durch.

    Wenn Du damit Probleme haben solltest, kannst Du gerne innerhalb dieses Threads weitere Fragen stellen (bitte öffne keinen neuen Thread, solange dieser noch sichtbar ist - Doppelpostings sind hier unwillkommen).

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. bekommt die Funktion einen Verweis auf das Form-Tag (als hätte man es mit document.getElementById selektiert).

      <klugscheiss art="schokolade">einen verweis auf das form element :)</klugscheiss>

      aber ansonsten gibts ein fachlich hilfreich von mir

      1. bekommt die Funktion einen Verweis auf das Form-Tag (als hätte man es mit document.getElementById selektiert).
        <klugscheiss art="schokolade">einen verweis auf das form element :)</klugscheiss>

        War spät gestern :-)

        aber ansonsten gibts ein fachlich hilfreich von mir

        Danke!

        Gruß, LX

        --
        X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: Unusual
        X-Please-Search-Archive-First: Absolutely Yes
  2. Liebe(r) taohi,

    <script langugage="JavaScript">

    was ist das für ein Attribut "langugage"? Das ist hier erstens völlig falsch und zweitens fehlt hier ein sehr wichtiges Attribut "type" mit dem Wert "text/javascript"!

    <script type="text/javascript">

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. ein sehr wichtiges Attribut "type" mit dem Wert "text/javascript"!

      http://annevankesteren.nl/2005/02/javascript-mime-type

      1. Lieber suit,

        ein sehr wichtiges Attribut "type" mit dem Wert "text/javascript"!

        http://annevankesteren.nl/2005/02/javascript-mime-type

        das Attribut "type" ist sehr wichtig! *gg*

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)