Rainer: Formular prüfen

Hallo,

habe eine Checkbox "backup" und ein Textfeld "BackupName".

das JS

<script type="text/javascript">
function chkBackup(){
if(document.B.backup.value == 1 && document.B.BackupName.value == "") {
alert("Bitte einen Namen für das Backup eigeben!");
document.B.BackupName.focus();
return false;
}
}
</script>
 das Formular

<form name="B" action="<?php $PHP_SELF; ?>" method="post" onSubmit="return chkBackup()">
<table>
  <tr>
    <td width="1%">Daten&nbsp;sichern</td>
    <td><input name="backup" type="checkbox" value="1" /></td>
  </tr>
  <tr>
    <td>Sicherungsname</td>
    <td><input name="BackupName" type="text" maxlength="20" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Backup" /></td>
  </tr>
</table>
</form>

Das Formular wird generell nicht abgeschickt, egal ob "backup" ein Haken hat oder nicht. Es sollte doch aber prüfen -" ist backup == 1 und BackupName == "" dann ALERT sonst abschicken.
Ganz großes Rätsel für mich.

Gruß Rainer

  1. Das Formular wird generell nicht abgeschickt, egal ob "backup" ein Haken hat oder nicht. Es sollte doch aber prüfen -" ist backup == 1 und BackupName == "" dann ALERT sonst abschicken.

    Frag doch mal ab, ob die Checkbox ach tatsächlich ein Häkchen hat:
    http://de.selfhtml.org/javascript/objekte/elements.htm#checked

    JJ

    1. Hallo JJ,

      danke, das war's.

      Gruß Rainer

  2. Mahlzeit,

    Das Formular wird generell nicht abgeschickt, egal ob "backup" ein Haken hat oder nicht.

    Wenn der Benutzer Javascript nicht aktiviert hat, wird das Formular generell abgeschickt. Merke: Validierung von Eingabewerten hat IMMER auf dem Server zu erfolgen - eventuelle "Vorvalidierungen" mit Hilfe von Javascript dienen lediglich der Bequemlichkeit bzw. Benutzerführung ... "ALL INPUT IS EVIL!"

    Es sollte doch aber prüfen -" ist backup == 1 und BackupName == "" dann ALERT sonst abschicken.

    Was liefert Deine Funktion "chkBackup()" zurück, wenn die darin enthaltene Bedingung NICHT zutrifft? True? False? Gar nichts?

    MfG,
    EKKi

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

      • ebenfalls

      Dachte ich mir doch das irgenwer garantiert den Schlaumeier spielen _muss_.

      Ohne zu wissen wie und wo es eingesetzt wird sind kannst du dir die Hinweise schenken. Zur Info: Intranet - mein _eigenes_ - JavaScript _garantiert_ an!

      Gruß Rainer

      1. Dachte ich mir doch das irgenwer garantiert den Schlaumeier spielen _muss_.

        und du erwartest, dass jeder hellsehen _muss_???

        Ohne zu wissen wie und wo es eingesetzt wird ..

        genau, woher soll das jemand Wissen, wenn du es nicht sagst.

        Struppi.

        1. Dachte ich mir doch das irgenwer garantiert den Schlaumeier spielen _muss_.
          und du erwartest, dass jeder hellsehen _muss_???

          Niemand mußte hellsehen, um den entscheidenden Hinweis zu geben! Also mal schön die Bälle flachhalkten und nicht hinter jedem Busch einen Indianer sehen...

          JJ

          1. Dachte ich mir doch das irgenwer garantiert den Schlaumeier spielen _muss_.
            und du erwartest, dass jeder hellsehen _muss_???
            Niemand mußte hellsehen, um den entscheidenden Hinweis zu geben! Also mal schön die Bälle flachhalkten und nicht hinter jedem Busch einen Indianer sehen...

            Darum geht es hier nicht, es ging um den Hinweis, dass eine Überrprüfung der Daten auf jeden Fall auch Serverseitig erfolgen soll. Der sinnvoll ist und mit Sicherheit kein Grund, dass sich irgendjemand persönlich angegriffen fühlt.

            Struppi.

            1. Sieste Struppi, das ist der feine Unterschied. Du schreibst "soll". eKKi schreibt "MUSS" mit klemmender GROSSSCHREIBTASTE.
              Erstens fühle ich micht _nicht_ angegriffen ;-) und zweitens stand der erste Teil von eKKi's Antwort in keinerlei Zusammenhang mit meiner Frage. Ich wollte eigentlich nur darauf hinweisen das es reicht die Frage zu beantworten, sofern man dazu in der Lage ist, und dann evtl. noch zusätzliche Hinweise zu geben, falls man sich der Mühe unterziehen möchte.

              Erst "Belehrungen" zu erteilen und dann einen nicht unbedingt hilfreichen Hinweis zu geben ist meiner Meinung nach ein etwas zweifelhaftes Verhalten. Dann lieber nichts schreiben und lesen was andere dazu zu sagen haben. Ist manchmal _sehr hilfreich_.

              Gruß Rainer

  3. Noch eine Ergänzung zu deinem Code.

    <script type="text/javascript">
    function chkBackup(){
    if(document.B.backup.value == 1 && document.B.BackupName.value == "") {

    Der umständlich Weg über document.forms[..] ist hier nicht nötig.

    <form action="..." onsubmit="return chkBackup(this)">

    function chkBackup(form){  
    if(form.backup.checked == 1 && form.BackupName.value == "") {  
    ...  
    
    

    Damit kannst du dir den Namen für das Formular sparen.

    Struppi.

    1. Hallo,

      <form action="..." onsubmit="return chkBackup(this)">

      function chkBackup(form){

      if(form.backup.checked == 1 && form.BackupName.value == "") {
      ...

        
      die Abfrage wäre so sinnvoller  
        
      ~~~javascript
        
       if (! form.backup.checked  || form.BackupName.value=="" ) {  
          alert ( ...)  
          return false;  
          }  
      
      

      Gruß plan_B

      --
           *®*´¯`·.¸¸.·
      1. die Abfrage wäre so sinnvoller

        Logisch, hab ich gar nicht drauf geachtet.

        if (! form.backup.checked  || form.BackupName.value=="" ) {

          
        oder  
        ~~~javascript
          
        if (!form.backup.checked  || !form.BackupName ) {  
        
        

        Struppi.

        1. Hmm,

          if (form.backup.checked  && !form.BackupName ) {

          erscheint mir sinnvoller.

          Wenn backup checked und BackupName fehlt. Allerdings ist BackupName ein Textfeld und kann in dem Fall _nie_ fehlen. Wird wohl so auch nicht gehen aber:

          if (form.backup.checked  && form.BackupName.value == "" ) {

          wäre möglich.

          Probiere ich auch mal aus.

          Gruß Rainer

          1. if (form.backup.checked  && !form.BackupName ) {

            orks - da ist das value verschwunden.

            ich meinte:
            if (form.backup.checked && !form.BackupName.value ) {

            if (form.backup.checked  && form.BackupName.value == "" ) {

            Du musst nicht auf den Leerstring prüfen, es reicht der Vergleich auf not.

            Struppi.

            1. Jepp,

              geht auch - und gemeinsam sind wir auch ohnen Belehrung stark ;-)

              Gruß Rainer