Announcement

Collapse
No announcement yet.

Jquery Selectbox und validate Plugin

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Jquery Selectbox und validate Plugin

    Hallo und wieder ein Hindernis

    Code:
    $(document).ready(function(){
    //Plugin Abteilungen kennzeichnen aufrufen
             $(".startseite").abt_kennzeichnen();
     /*************************************************************/
    /********      UI Tabs    **********/
    /**************************************************************/
       
    //Navigationstabs definieren.... dynamisch nach mysql ergebnis
    $("#arbeit_tabs").tabs({
         
        ajaxOptions: {    
                     cache: false,
                     type:'POST',
    			     contentType: "application/x-www-form-urlencoded;charset=utf-8",
               		 success:zeigeErgebnis,
    			     error: function( xhr, status, index, anchor ) {
    					$( anchor.hash ).html("Es konnten keine Daten unter der angegebenen Adresse gefunden werden.");
    				 }
    			}
    
         });
    function zeigeErgebnis(responseText, statusText, xhr, $form)  
    	{  
              var $tabs = $('#arbeit_tabs').tabs();
              var idPrefix = $tabs.tabs('option', "idPrefix");
    	  var selected = $tabs.tabs('option', "selected");
    	  var aktiv_tab = "#"+idPrefix+selected;
              var table = "#table_ab" + idPrefix+selected;
              //Tabelle mit eindeutiger ID versehen
                  $("#table_ab").attr('id', 'table_ab'+idPrefix+selected);
              //Tabelle mit fixiertem Header erstellen               
                  $(table).tableScroll({height:650});
              // CSS der ersten Spalte Arbeit JA / NEIN
                $(table+' input[value="ja"]').parents('td').addClass("gruen");
                $(table+' input[value="nein"]').parents('td').addClass("rot");
              // CSS Zeilen unterschiedlich markieren
                $("tbody").find("tr:even").addClass("even");      
                $("tbody").find("tr:odd").addClass("odd"); 
    	// Alle ausrücken lassen
               $("#bu_alle_ausruecken").click(function(){
                   alert();
               })
             
           // Status festlegen  
             $('select').change (function(){
                //var ID = $(this).parents('tr').attr('id');
                
              weiterverarbeiten(this.id);
                }) 
    }//ENDE Function zeigeErgebnis  	
    function weiterverarbeiten(selectedID)
    {
      
          
         //tabindex ermitteln
                   var $tabs = $('#tabs').tabs();
    		var idPrefix = $tabs.tabs('option', "idPrefix");
    		var selected = $tabs.tabs('option', "selected");
    		var aktiv_tab = "#"+idPrefix+selected;
    		//$(aktiv_tab).empty();
                     //gewählte ID ermitteln
                       //var selectedID = this.id;
                      
                       // weitertverarbeitende datei
                       var url = 'arb_buchen.php';
                        // festellen ob button oder radionbutton
                        var namesep = selectedID.split("_");
                        // separierter name des inputs zur weiteren verarbeitung ( form, button, id bestimmung)
                         //var weiterleitung = (namesep.length == 1)? namesep[0] : namesep[1];
                           //elemente Selector bilden
                            
                            var objauswahl = $("#"+selectedID);
                            var obj = $("#fo_"+selectedID);
                            alert(obj.serialize());
                           
                        obj.validate({
                         
                          submitHandler: function(form) { alert("test");
                            var options= {    
    					url:url,
    					type:'POST',
    					datatype:'html',
    					target:aktiv_tab,
                                            cache: false,
    					contentType: "application/x-www-form-urlencoded;charset=utf-8",
                                            //beforeSubmit:  zeigeRequest,
                   				success: zeigeErgebnis
                                           
    			  }
     
                                    // bind form using 'ajaxForm' 
                                                 $(form).ajaxForm(options); 
                         alert("OK");                       
                     },
                     rules: {
    			 grund_abw:"required"
                    }
                        
              });
             
    
    }
    
          
    }) // Ende Ready
    </script>
    HTML Code:
    <body onLoad="window.moveTo(0,0);window.resizeTo(screen.availWidth,screen.availHeight);">
    
    
    <div class="arbeiter" id="arbeit_tabs">
     	<ul>
    	   <li><span id="bereichwechsel">Arbeiterliste Haus <?php echo $datei_haus;?></span> </li>
    	   <li><a href="#arbtabs-1">Infoseite</a></li>
    		<?php
    		
    	
                    foreach($abteilungen as $abteilung){
    		     echo "<li><form method=\"post\"><a href=\"arb_zeigen.php?abteilungID=".$abteilung['abteilungID']."\">".$abteilung['abteilung']."</a><input type=\"hidden\" name=\"abteilungID\" value=\"".$abteilung['abteilungID']."\"></form></li>\n";
    		}
                    echo "<li><form method=\"post\"><a href=\"arb_zeigen.php?abteilungID=%\">Alle</a><input type=\"hidden\" name=\"abteilungID\" value=\"".$abteilung['abteilungID']."\"></form></li>\n";
                    ?>
    </ul>
        <div class="arbeitinhalt" id ="arbeit_inhalt">
        
           <div id="arbtabs-1">Arbeitszeiten, Ausr&uuml;ckzeiten, Begleitung </div>
    	
        </div>
       <span id="debug"></span>
       <span id="printr"></span>
      <input type="hidden" id="heute" name="heute" value="<?php echo date('d.m.Y');?>">
    </div>
    <div id ="fusszeile"><?php echo $version;?><span id="zeitanzeige"></span></div>
    
    
        
    </body>
    Mir scheint ich hab das was vergessen, kann es aber nciht finden.

    Seite mit mehreren UI Tabs. In jedem Tab die gleiche Ausgabe (natürlich anderer Inhalt). Ausgabe erfolgt in einer geteilten Tabelle. In jeder Tabellenreihe gibt es eine Selectbox. Wird jetzt ein Change Event ausgelöst soll ein Ajax Request gestartet und damit die Datenbank aktualisiert werden. Weiter soll überwacht werden, dass kein NULL value aus der Selectbox übergeben wird, deshalb (validate.....)
    im Code lasse ich mir zwei Alert anzeigen.
    1. Objekt = zu prüfendes Formular ( Werte richtig )
    2. Meldung 'OK' wenn Prüfung erfolgt. erscheint nicht, also wird validate nicht ausgelöst.

    meine Idee > ICH HABE WAS VERGESSEN

    nur was_

  • #2
    Was genau ist denn der Fehler? Versuche Dich doh mal per Javascript debugger reinzuhängen und zu sehen an welcher Stelle etwas nicht funktioniert. Den kompletten Code wird sich hier mit Sicherheit niemand anschauen. Du musst versuchen den Fehler zu isolieren und dann kannst Du ihn a, entweder gleich selber fixen weil Du weisst woran es liegt oder b, nochmal im Forum fragen warum genau diese eine Stelle hängt.
    Ich denke auch nicht dass es in einem Javascript Problem nötig PHP Code zu posten. Diesen könnte man z.B. aus der generierten Seite kopieren

    Comment


    • #3
      naja, wie man´s macht.....

      also mein Porblem ist, dass der AJAX Requestt nicht ausgeführt wird.
      Code:
      obj.validate({
                           
                            submitHandler: function(form) { alert("test");
                              var options= {    
      					url:url,
      					type:'POST',
      					datatype:'html',
      					target:aktiv_tab,
                                              cache: false,
      					contentType: "application/x-www-form-urlencoded;charset=utf-8",
                                              //beforeSubmit:  zeigeRequest,
                     				success: zeigeErgebnis
                                             
      			  }
       
                                      // bind form using 'ajaxForm' 
                                                   $(form).ajaxForm(options); 
                           alert("OK");                       
                       },
                       rules: {
      			 grund_abw:"required"
                      }
      script läuft soweit durch, überspringt jedoch den submitHandler und geht weiter zu rules.

      habe den Quellcode gepostet um zu zeigen wie ich den Code aufgebaut haben und um den Fehler zu ermitteln.
      ich denke ich habe einen Schritt vergessen..... nur sehe ich nicht welchen.

      Comment


      • #4
        Gut, vielleicht hab ich Tomaten auf den Augen... ist
        Code:
        obj
        da nicht undefiniert?
        ..hätte sowas wie: $('#dasFormular').validate(); erwartet....

        Keine ahnung, benutze das eigentlich nicht... regeln haste ja auch nicht viele.... einfach ohne Plugin abschießen? ist mit jquery ja nu kein Hexenwerk- nur ums abzusenden sehe ich jetzt nicht die Not für's Plugin..

        Comment


        • #5
          ich stehe am Anfang, die Regeln sollten dich nicht stören.... es werden noch mehr.
          Mit einer oder mehreren Regeln ist egal, abschicken soll er es... mmmpf

          Comment


          • #6
            ...aber wo wird es denn gebunden? wenn ich tippen sollte wie da plugin tickt - wird das 'Submitereignis' des mit $('#Formular') erzeugten Objekts schon nach dem fertigladen gebunden und dann im Plugin entsprechend verarztet... Bei die sieht es so aus als ob du da eine Methode Anwendest aber garnicht so recht sagst worauf ... was ist denn obj? ...würd mich wundern, wenn das so gedacht ist - jquer tickt da meist anders ..

            PS.: mal so nebenbei, weil ich das jetzt schon ein paarmal gesehen hab.... So eine javascript Validierung ist zwar ganz sexy aber mehr als grob schauen ob was da ist würd ich gernicht machen.... wenn was fehlt, entsprechend mit addClass was mitgeben und gut...
            Serverseitig must du eh nochmal validieren und verarzten was da ankommt...
            Zuletzt editiert von Christian Marquardt; 03.12.2012, 13:33.

            Comment


            • #7
              Sicherlich ist der Handler gebunden -> http://docs.jquery.com/Plugins/Validation/validate
              Was sollte, wenn etwas fehlt per addClass mitgegeben werden können?

              Ev. hier die gleiche Ursache wie http://elementdesignllc.com/2010/10/...tly-in-chrome/
              Christian

              Comment


              • #8
                Ich schreib hier keine Bücher.Man kannn leicht alle Eingabefelder durchlaufen und dann über eine vorgefertigte css-class nach Geschmack anzeigen : Hier Kunde, sie he da fehlt was..... (also ganz ohne plugin)

                Allein schon allein weil hier mehrere Formulare am start sein sollen -> woher soll das arme Plugin wissen wen oder was er abschicken soll?

                Comment


                • #9
                  Es hätte mich halt interessiert, wie du eine Validerung bsp. gülitges Datum mithilfe von addClass machst.

                  Ich schreib hier keine Bücher
                  Ja, das ist verständlich

                  Allein schon allein weil hier mehrere Formulare am start sein sollen -> woher soll das arme Plugin wissen wen oder was er abschicken soll?
                  Du kennst das Framework?
                  Christian

                  Comment


                  • #10
                    Ja, Und bei mir funktioniert es immer vorzüglich ohne jedes Problem.

                    Aber ich lern ja jeden Tag dazu:

                    Warum sagt mir niemand wo obj etwas sinvolles zugewiesen wird - dann bin ich ja ruhig

                    Comment


                    • #11
                      var obj = $("#fo_"+selectedID);
                      Christian

                      Comment


                      • #12
                        Ok...

                        in dem langen Fragment hab ich's gefunden:
                        Code:
                         
                                                var obj = $("#fo_"+selectedID);
                                                alert(obj.serialize());
                        hab jetzt zwar einen verdacht ... aber jetzt spar ich's mir

                        Comment


                        • #13
                          Siehe Beitrag #11
                          hab jetzt zwar einen verdacht ... aber jetzt spar ich's mir
                          Wir danken dir für deine Nichthilfe

                          Gehört dann in die Rubrik

                          hab das nicht geprüft...habe bitte Verständnis, wenn ich mir hier keine Testdaten generiere und Lösungen getestet abliefere - von irgendwas muss man ja noch leben!
                          http://entwickler-forum.de/showthrea...729#post268729
                          Christian

                          Comment


                          • #14
                            wenn ich es richtig verstehe fängt der submitHandler einen Submit ab und fährt dann mit der gewünschten Prozedur fort.

                            Ich habe keinen Submit ausglöst.... nur einen change.....

                            Code:
                                  objauswahl.submit();                  obj.validate({
                                                 
                                                  submitHandler: function(form) { 
                                                    
                                                    var options= {    
                            					url:url,
                            					type:'POST',
                            					datatype:'html',
                            					target:aktiv_tab,
                                                                    cache: false,
                            					contentType: "application/x-www-form-urlencoded;charset=utf-8",
                                                                    beforeSubmit:  function(){alert("test");},
                                           				success: zeigeErgebnis
                                                                   
                            			  }
                            
                            			
                                          
                                                            // bind form using 'ajaxForm' 
                                                                         $(form).ajaxSubmit(options); 
                                                                   
                                             },
                                             rules: {
                            			 grund_abw:"required"
                                            }
                                                
                                      });
                            habe jetzt objauswahl.submit() eingefügt. Jedoch muss ich den change 2x ausführen... grr. ich werd kirre....

                            Comment


                            • #15
                              ähm, ich möchte keine Lösung, ich wünsche nur einen Stubbs in die richtige Richtung. Das was ich hier mache habe ich mir angelesen und durch ständiges probieren selbst angeeignet. Nur wenn ich ein Problem habe, das ich nicht selber lösen kann poste ich. Manche Dinge sind mir halt noch nicht so klar. Ich suche auch selbst nach der Lösung. ( siehe#14)

                              Comment

                              Working...
                              X