lvl: PHP Variablen belegen.

Hallo all.

Ich überprüfe mit einer JS Function ob der Browser JS unterstüzt oder nicht.

if(navigator.javaEnabled() == true){}

In meinem HTML Code habe ich zwei divs (einer style(display: block; der andere display: none;)
Wenn JS aktiviert ist, werden die styles vertauscht.
Nun stehen jedoch in meinen Divs Formular felder. Wenn ich jetzt mein Formular los schicke, erhalte ich von beiden Formular einen Rückgabe Wert.

Wobei nur eins, vom User richtig ausgefüllt wurde.

Kann ich evtl. mit JS einer PHP Variablen einen Wert übergeben, damit ich weiß: ok, JS ist aktiviert, benutze Formular Feld NameJS oder, nein ist nicht aktiviert, benutze NameNoJS.

Sollte sowas nicht möglich sein, wäre ich sehr dankbar für eine Idee.

Anbei den Code: .js

  
function CheckJS(){  
 if(navigator.javaEnabled() == true){  
  document.getElementById("Date_1").style.display = "none";  
  document.getElementById("Date_2").style.display = "block"  
 }  
}  
onload=CheckJS;  

.htm/.php

  
<div id="Date_1" style="display: block;">  
von <input class="10" type="text" name="VonDate" maxlength="10" value="0000-00-00" />  
bis <input class="10" type="text" name="BisDate" maxlength="10" value="0000-00-00" /><span class="smalltext">(JJJJ-MM-TT)</span>  
<br /><br />  
</div>  
<div id="Date_2" style="display: none;">  
<table>  
 <tr>  
  <td style="vertical-align: middle;">von</td>  
  <td><script>DateInput('BisDateJS', true, 'YYYY-MM-DD')</script></td>  
  <td style=vertical-align: middle;">bis</td>  
  <td><script>DateInput('VonDateJS', true, 'YYYY-MM-DD')</script></td>  
 </tr>  
</table>  
<input type="hidden" name="isJs" value="true" />  
</div>  

--
MfG lvl
  1. Mahlzeit,

    Ich überprüfe mit einer JS Function ob der Browser JS unterstüzt oder nicht.

    Hm, findest Du das nicht selbst ein wenig sinnlos? Wenn Javascript nicht verfügbar wäre, könntest Du gar nicht überprüfen, ob Javascript verfügbar ist. Und wenn es verfügbar ist, brauchst Du nicht zu überbrüfen, ob es verfügbar ist.

    if(navigator.javaEnabled() == true){}

    1. ist es wenig sinnvoll zu überprüfen, ob es wahr ist, dass navigator.javaEnabled() wahr ist und

    2. überprüft die Methode http://de.selfhtml.org/javascript/objekte/navigator.htm#java_enabled@title=javaEnabled() nicht, ob http://de.selfhtml.org/javascript/index.htm@title=Javascript verfügbar ist (was aus den o.g. Gründen schwachsinnig wäre), sondern ob Java verfügbar ist.

    Nun stehen jedoch in meinen Divs Formular felder. Wenn ich jetzt mein Formular los schicke, erhalte ich von beiden Formular einen Rückgabe Wert.

    Sicher. Es sind ja auch beide vorhanden.

    Wobei nur eins, vom User richtig ausgefüllt wurde.

    Sicher. Er sieht ja nur eins (gesetzt den Fall, sein Browser versteht CSS und der Benutzer kann sehen).

    Kann ich evtl. mit JS einer PHP Variablen einen Wert übergeben, damit ich weiß: ok, JS ist aktiviert, benutze Formular Feld NameJS oder, nein ist nicht aktiviert, benutze NameNoJS.

    Du kannst zwar mit Javascript einer PHP-Variablen keinen Wert zuweisen, Du kannst aber einem Formularelement einen Wert zuweisen:

    <html>  
    <head>  
    [...]  
    <script type="text/javascript">  
    [code lang=javascript]body.onload = function() {  
      document.getElementsByName('isJs').value = 'true';  
    }
    

    </script>
    </head>
    <body>
    [...]
    <input type="hidden" name="isJs" value="false" />
    [...]
    </body>
    </html>[/code]

    So ist der Wert des <input>-Elements erstmal (und ohne Javascript auch weiterhin) "false". Wenn allerdings Javascript aktiviert ist, dann wird der Wert nach dem Laden des Dokuments auf "true" gesetzt.

    <td><script>DateInput('BisDateJS', true, 'YYYY-MM-DD')</script></td>
      <td><script>DateInput('VonDateJS', true, 'YYYY-MM-DD')</script></td>

    Es fehlt das <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderliche "type"-Attribut>!

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Mahlzeit,

      argl, da war der Klickfinger wieder schneller als das Hirn:

      body.onload = function() {

      document.getElementsByName('isJs').value = 'true';
      }

        
      muss natürlich richtig so heißen:  
        
      ~~~javascript
      body.onload = function() {  
        document.getElementsByName('isJs')[0].value = 'true';  
      }
      

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      1. überprüft die Methode http://de.selfhtml.org/javascript/objekte/navigator.htm#java_enabled@title=javaEnabled() nicht, ob http://de.selfhtml.org/javascript/index.htm@title=Javascript verfügbar ist (was aus den o.g. Gründen schwachsinnig wäre), sondern ob Java verfügbar ist.

      Es ist ja für die Prüfung ob JS funktioniert völlig irrelevant was er prüft (theoretisch hätte mann auch (1==1) oder wenn das in JS üblich ist auch (1) prüfen können), denn wenn JS deaktiviert ist, wird keine Prüfung durchgeführt. Und somit werden die Styles nicht geändert.

      Auf das mit dem isJS auf true sonst false ist mir gestern abend auch eingefallen. *danke*

      Das mit dem <noscript>-Bereich schau ich mir aber auch mal an. :)

      Also THX für die Hilfe. Manchmal hat man einfach ein Brett vorm Kopf, vorallem wenn man mit JS oder nur J nicht wirklich programmiert.

      --
      MfG lvl
      1. Mahlzeit,

        Es ist ja für die Prüfung ob JS funktioniert völlig irrelevant was er prüft (theoretisch hätte mann auch (1==1) oder wenn das in JS üblich ist auch (1) prüfen können), denn wenn JS deaktiviert ist, wird keine Prüfung durchgeführt. Und somit werden die Styles nicht geändert.

        Eine Prüfung ist generell überflüssig ... wenn Javascript aktiviert ist, werden die Anweisungen ausgeführt - wenn es nicht aktiviert ist, passiert halt auch nichts.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Hi,

        1. überprüft die Methode http://de.selfhtml.org/javascript/objekte/navigator.htm#java_enabled@title=javaEnabled() nicht, ob http://de.selfhtml.org/javascript/index.htm@title=Javascript verfügbar ist (was aus den o.g. Gründen schwachsinnig wäre), sondern ob Java verfügbar ist.

        Es ist ja für die Prüfung ob JS funktioniert völlig irrelevant was er prüft (theoretisch hätte mann auch (1==1) oder wenn das in JS üblich ist auch (1) prüfen können), denn wenn JS deaktiviert ist, wird keine Prüfung durchgeführt.

        Es ist selbstverstaendlich nicht irrelevant, *was* man prueft.
        Wenn du auf JAVA-Unterstuetzung ueberpruefst, ich aber kein JAVA im Browser aktiviert habe - dann ergibt deine Ueberpruefung false, obwohl ich JavaScript durchaus aktiviert habe ... sollte selbst jemandem einleuchten, dessen Sache Logik offenbar nicht sonderlich ist.

        MfG ChrisB

  2. Hallo,

    Ich überprüfe mit einer JS Function ob der Browser JS unterstüzt oder nicht.
    Anbei den Code: .js

      
    
    > function CheckJS(){  
      
    // Diese Prüfung wird nur ausgeführt, wenn Javascript vorhanden ist  
      
    
    >  if(navigator.javaEnabled() == true){  
      
    // Warum prüfst Du auf die völlig andere Programmiersprache Java,  
    // die mit Javascript nichts zu tun hat?  
      
    
    >   document.getElementById("Date_1").style.display = "none";  
    >   document.getElementById("Date_2").style.display = "block"  
    >  }  
    > }  
    > onload=CheckJS;
    
    

    stecke Dein NOJS-Formularfeld in einen <noscript>-Bereich und erzeuge das andere mit Javascript.

    Freundliche Grüße

    Vinzenz

  3. Hallo,

    Ich überprüfe mit einer JS Function ob der Browser JS unterstüzt oder nicht.
    if(navigator.javaEnabled() == true){}

    abgesehen davon, dass du Java und Javascript durcheinanderschmeißt, ist es normalerweise unsinnig, einen boolschen Wert nochmal explizit auf ==true zu überprüfen. Angenommen, deine Abfrage wäre von der Sache her richtig, dann wäre

    if (navigator.javaEnabled()) {}

    einfacher zu lesen und einfacher zu verstehen.

    Ciao,
     Martin

    --
    Niemand lebt allein von seinen Träumen.
    Aber wer träumt, lebt noch.