[JavaScript] Referenzen und Funktionsaufrufe

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Smokers, 27. Juli 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 27. Juli 2009
    Zuletzt von einem Moderator bearbeitet: 16. April 2017
    Referenzen und Funktionsaufrufe

    Hallöchen,
    hatte gerade das Script hier geschrieben :

    PHP:
    <? php



    ?>
    <script language="text/javascript" type="text/javascript">

    var ele1;
    var ele2;
    var ele3;

    window.setInterval("enable_button()", 250);

    function check(obj,type) {
        if(type != 'password'){
            if(obj.value != ""){
                new Ajax.Updater($(obj.name), '../ajax.php?type='+type+'&value='+obj.value, { method: 'get' });
            }
            else{
                $(obj.name).value ='';
            }
        }
        else {
            if($('pw1') != "" || $('pw2') != "") {
                new Ajax.Updater($('reg_password2'), '../ajax.php?type='+type+'&value='+$('pw1').value+'&value2='+$('pw2').value, { method: 'get' });
            }
            else {
                $('reg_password2').value ='';
            }
        }
    }
    function enable_button(){
        if($('reg_username').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_username').value != "" ){
            ele1 = false;
        }
        else {
            ele1 = true;
            
        }
        
        if($('reg_email').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_email').value != "" ){
            ele2 = false;
        }
        else {
            ele2 = true;
            
        }
        
        if($('reg_password2').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_password2').value != "" ){
            ele3 = false;
        }
        
        else {
            ele3 = true;
        }

        if(ele1 && ele2 && ele3){
            $('reg_btnregister').disabled = false;
            return true;
        } 
        else {
            $('reg_btnregister').disabled = true;
            return false;
        }    
    }

    function do_register(){
        if(enable_button()){
            $('registerform').submit();
        }
        else {
            $('reg_btnregister').disabled = true;
        }
    }
    <?php 
    if(isset( $_POST [ 'reg_username' ])) {
    ?>
    check($('element1'),'username');
    <?php 
    }
    ?>
    </script>
    <div id="regform">
        <h2>
            Registrierung
        </h2>
        <form id="registerform" name="registerform" action="<?php  echo  htmlspecialchars ( $_SERVER [ 'REQUEST_URL' ]);  ?>" method="POST">
            <table>
                <tr>
                    <td>
                        Benutzername
                    </td>
                    <td>
                        <input type="text" id="element1" name="reg_username" maxlength="50" tabindex="1" onkeyup="check(this,'username');" value="<?php  echo  htmlspecialchars ( $_POST [ 'reg_username' ]);  ?>" />
                    </td>
                    <td>
                        <span id="reg_username" ></span>
                    </td>
                </tr>
                <tr>
                    <td>
                        E-Mail
                    </td>
                    <td>
                        <input type="text" id="element2" name="reg_email" maxlength="75" tabindex="2" onkeyup="check(this,'email');" value="<?php  echo  htmlspecialchars ( $_POST [ 'reg_email' ]);  ?>" />
                    </td>
                    <td>
                        <span id="reg_email" ></span>
                    </td>
                </tr>
                <tr>
                    <td>
                        Passwort
                    </td>
                    <td>
                        <input type="password" id="pw1" name="reg_password" maxlength="50" tabindex="3" onkeyup="check(this,'password');" value="<?php  echo  htmlspecialchars ( $_POST [ 'reg_password' ]);  ?>" />
                    </td>
                    <td>
                        
                    </td>
                </tr>
                <tr>
                    <td>
                        Passwort-Bestätigung
                    </td>
                    <td>
                        <input type="password" id="pw2" name="reg_password2" maxlength="50" tabindex="4" onkeyup="check(this,'password');" value="<?php  echo  htmlspecialchars ( $_POST [ 'reg_password2' ]);  ?>" />
                    </td>
                    <td>
                        <span id="reg_password2" ></span>
                    </td>
                </tr>
            </table>
            <div id="regbuttonset" >
                <input id="reg_btnregister" type="button" name="reg_btnregister" value="Registrieren!" onclick="do_register();" disabled="disabled"/>
                <input type="button" name="reg_btnreset" value="Zurücksetzen" onclick="do_reset();"/>
            </div>
        </form>
    </div>
    welcher den code hier produziert:
    (nach nem Post)
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head profile="http://gmpg.org/xfn/11">
     <title>Planungsmodul - Registrierung</title>
     
     <link rel="shortcut icon" href="[i]images/favicon.png[/i]" type="image/png"/>
     <link rel="stylesheet" href="[i]http://localhost/study/templates/default/style.css[/i]" />
     
     <script type="text/javascript" src="[i]http://localhost/study/js/prototype.js[/i]"></script>
     
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <meta http-equiv="content-language" content="de" />
     <meta http-equiv="imagetoolbar" content="false" />
     <meta name="author" content="XXXXXXXXXXXXX" />
     <meta name="copyright" content="XXXXXXXXXX" />
     <meta name="description" content="" />
     <meta name="keywords" content="" />
     
     <meta name="last-modified" content="Wed 24 Jun 2009 10:15:57 CEST" />
     <meta name="language" content="de" />
     <meta name="robots" content="index, follow" />
     <meta name="revisit-after" content="2 days" />
     </head>
     <body>
     <noscript>
     <div style="text-align:center;"> Sie haben kein JavaScript aktiviert. Um diese Webseite nutzen zu können, holen Sie dies bitte nach.</div>
     </noscript>
     <div id="main">
     <div id="outer">
     <div id="headbox">
     <div id="header">
     headerbox
     </div>
     <div id="mainnav">
     
     </div>
     </div>
     <div id="leftbox">
     <p id="pleaselogin">
     Hallo, bitte melde dich an, oder <a href="[i]registrierung.html[/i]">registriere</a> dich um die Funktionen des Planers nutzen zu können.
    </p>
    <script language="text/javascript" >
    function do_login() {
     form = document.getElementsByName('loginform');
     //doit =)
    }
    </script>
    <form name="loginform" action="" method="POST" >
     <fieldset>
     <label for="study_username">Benutzername:</label>
     <input type="text" name="study_username" maxlength="50" tabindex="" id="study_username"/>
     <label for="study_password">Passwort:</label>
     <input type="password" name="study_password" maxlength="75" tabindex="" id="study_password"/>
     
     <input type="button" name="study_btnlogin" value="Anmelden!" onclick="do_login();" />
     </fieldset>
    </form>
    
     </div>
     <div id="mainbox">
     <script language="text/javascript" type="text/javascript">
    
    var ele1;
    var ele2;
    var ele3;
    
    window.setInterval("enable_button()", 250);
    
    function check(obj,type) {
     if(type != 'password'){
     if(obj.value != ""){
     new Ajax.Updater($(obj.name), '../ajax.php?type='+type+'&value='+obj.value, { method: 'get' });
     }
     else{
     $(obj.name).value ='';
     }
     }
     else {
     if($('pw1') != "" || $('pw2') != "") {
     new Ajax.Updater($('reg_password2'), '../ajax.php?type='+type+'&value='+$('pw1').value+'&value2='+$('pw2').value, { method: 'get' });
     }
     else {
     $('reg_password2').value ='';
     }
     }
    }
    function enable_button(){
     if($('reg_username').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_username').value != "" ){
     ele1 = false;
     }
     else {
     ele1 = true;
     
     }
     
     if($('reg_email').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_email').value != "" ){
     ele2 = false;
     }
     else {
     ele2 = true;
     
     }
     
     if($('reg_password2').innerHTML.search(/ajax_correct.png/) == -1 && document.getElementsByName('reg_password2').value != "" ){
     ele3 = false;
     }
     
     else {
     ele3 = true;
     }
    
     if(ele1 && ele2 && ele3){
     $('reg_btnregister').disabled = false;
     return true;
     } 
     else {
     $('reg_btnregister').disabled = true;
     return false;
     } 
    }
    
    function do_register(){
     if(enable_button()){
     $('registerform').submit();
     }
     else {
     $('reg_btnregister').disabled = true;
     }
    }
    check($('element1'),'username');
    </script>
    <div id="regform">
     <h2>
     Registrierung
     </h2>
     <form id="registerform" name="registerform" action="" method="POST">
     <table>
     <tr>
     <td>
     Benutzername
     </td>
     <td>
     <input type="text" id="element1" name="reg_username" maxlength="50" tabindex="1" onkeyup="check(this,'username');" value="Smokers1" />
     </td>
     <td>
     <span id="reg_username" ></span>
     </td>
     </tr>
     <tr>
     <td>
     E-Mail
     </td>
     <td>
     <input type="text" id="element2" name="reg_email" maxlength="75" tabindex="2" onkeyup="check(this,'email');" value="dsvdvsvdv@gmx.de" />
     </td>
     <td>
     <span id="reg_email" ></span>
     </td>
     </tr>
     <tr>
     <td>
     Passwort
     </td>
     <td>
     <input type="password" id="pw1" name="reg_password" maxlength="50" tabindex="3" onkeyup="check(this,'password');" value="asdfg1234!A" />
     </td>
     <td>
     
     </td>
     </tr>
     <tr>
     <td>
     Passwort-Bestätigung
     </td>
     <td>
     <input type="password" id="pw2" name="reg_password2" maxlength="50" tabindex="4" onkeyup="check(this,'password');" value="asdfg1234!A
    " />
     </td>
     <td>
     <span id="reg_password2" ></span>
     </td>
     </tr>
     </table>
     <div id="regbuttonset" >
     <input id="reg_btnregister" type="button" name="reg_btnregister" value="Registrieren!" onclick="do_register();" disabled="disabled"/>
     <input type="button" name="reg_btnreset" value="Zurücksetzen" onclick="do_reset();"/>
     </div>
     </form>
    </div>
     </div>
     <div id="rightbox">
     
     </div>
     <div style="clear:both"></div>
     <div id="footer">
     rv-090625/0.1 | Copyright © by XXXXXXXX 2009 - 2009 | Valid CSS & XHTML
     </div>
     </div>
     </div>
     </body>
    </html>
    Ich weis einfach nicht warum der Aufruf von check($('element1'),'username'); nicht geht.
    Ich lasse dieses Statement nach einem POST vorgang in den <script> teil einbetten, damit auch nach einem fehler die Prüfung der Formularelemente von statten geht, ohne das erst ein "onkeyup" stattfinden muss....

    Hoffe hab mich verständlich genug ausgedrückt ^^°

    danke schonmal im voraus....
     
  2. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    hi,

    hab das script nicht getestet.
    eine vermutung hab ich dennoch.

    du übergibst check($('element1'),'username');
    also ein objekt und ein wert

    deine function:
    function check(obj,type) {
    ... $(obj.name).value ='';
    }

    $(obj.name).value =''; --> das geht doch garnicht, schonmal alert ausgeführt?
    wenn dann so
    $(obj.id).value ='';
    du übergibst ja schon ein objekt/element ($('element1')) daher
    obj.value =''; --> das sollte gehen

    alert (obj.value);
    alert (obj.id);
    alert (obj.name);
    ...

    probier das mal und berichte.
     
  3. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    naja ne das is nur ne verständnisssache^^

    $(obj.name).value =''; funktioniert ,weil...
    wenn ich beim onkeyup event die funktion aufrufe " check(this,'username')"
    übergebe ich zwar this als objekt, aber der name vom aktuellen element ist gleichzeitig die ID des nächsten Span elements um dort das update drin zu halten ;-)

    PHP:
    <tr>
                    <td>
                        Benutzername
                    </td>
                    <td>
                        <input type="text" id="element1" name="reg_username" maxlength="50" tabindex="1" onkeyup="check(this,'username');" value="<?php  echo  htmlspecialchars ( $_POST [ 'reg_username' ]);  ?>" />
                    </td>
                    <td>
                        <span id="reg_username" ></span>
                    </td>
                </tr>
     
  4. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    [object HTMLSpanElement] hat keine eigenschaft names "value"
    versuch mal $(obj.name).update('');

    im übrigen top das du nicht auf den kommerz jquery/mootools zug aufspringst
    geht nix über prototype
     
  5. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    Ich werd immer bei prototype bleiben
    denen hab ich meine seele verschrieben ^^


    Naja das Problem ist, es geht ja soweit alles.Die ganzen Funktionen updates etc pp... =)

    Aber... Wenn ich das Fomular dann abschicke und sagen wir mal ein Fehler PHP Seitig auftritt, dann wird man zurück geleitet und die Values werden von PHP wieder eingetragen...
    Allerdings erfolgt die Javascript/ajax Prüfung der Values nur beim "onkeyup" event.
    das aber nicht stattfindet, weil die values vorher drinne stehen.

    daher der part :

    Code:
    <script>
    <?php 
     if(isset($_POST['reg_username'])) {
    ?>
    check($('element1'),'username');
    <?php 
     }
    ?>
    </script>
    Der sollte nun die Funktionen zum überprüfen der Inhalte einmalig manuell starten.
    Und genau DAS funzt net ^^



    //was ihr meintet ist das es nicht value heißt sondern eigentlich innerHTML = ''; etc pp
    //okay, änder ich noch, aber es geht auch so zZ ^^
     
  6. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    ah. du musst das ganze im onload ausführen.

    PHP:
    <? php  if(isset( $_POST [ 'reg_username' ])):  ?>
    Event.observe(window, 'load', function() { check($('element1'), 'username'); });
    <?php  endif;  ?>
     
  7. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    Ahh danke, Event.observe kannt ich noch nicht.
    Danke funzt =)
     
  8. 27. Juli 2009
    AW: Referenzen und Funktionsaufrufe

    dann gibts einiges zu lesen auf Prototype API Documentation | Home (Deprecated URL)
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.