Mssmar: Textfeld-Value dynamisch ausfüllen und leeren

Hallo,

Ich fülle den value eines Text-Feldes und leere ich es dynamisch, je nachdem ob ein Checkbox aktiviert ist oder nicht. Den Value des Text-Feldes fülle ich mit dem Alt-Inhalt des Checkboxes.

Wenn ich zwei Checkboxen, die den gleichen Wert im alt-attribute haben,  z.B

  
<input type="checkbox" name="autoModel" alt="9191" value="Renault11">  
<input type="checkbox" name="autoModel" alt="9191" value="Renault Clio">  
<input type="checkbox" name="automodel" alt="0202" value="Golf 3">  

und ich die zwei auswähle, dann habe ich zwei Mal "9191" in dem Value des Textfeldes. Aber das habe ich gelöst mit:

  
if (fieldGid == 'Audi' && objCheckbox.form.gidAudi.value ==""){  
document.getElementById('gidAudi').value = document.getElementById('gidAudi').value + objCheckbox.alt;  
}  

Was ich nicht lösen kann ist, wenn der User am Anfang beide Checkboxen für Renault aktiviert, dann steht im Textfeld "9191", aber dann will er nur ein Modell vom Renault haben und deaktiviert einen der beiden Checkboxes (und hier kommt es), dann wird der Value des Textfeldes geleert, was nicht passieren darf.

Der Value des Textfeldes darf leer sein, nur wenn keiner von beiden der Renault-Cheboxen
aktiviert ist.

Das Problem taucht auf nur, wenn der User zunächst beide Renault-Checkboxen aktiviert und plötzlich sich doch nur für einen entscheidet und den anderen Checkbox deaktiviert.

Kann mir bitte Jemand helfen?

Ich hoffe, dass ich das Problem verständlich beschrieben habe. Es fehlt mir offen gesagt
nicht einfach es zu beschreiben. dafür möchte ich schon mal entschuldigen.

Danke und Gruß
Messmar

JavaScript-Code:

  
function modifyField(objCheckbox){  
  
 var fieldGid = objCheckbox.title;  
  
 if(objCheckbox.checked){  
  objCheckbox.form.choosenCar.value = objCheckbox.form.choosenCar.value + objCheckbox.value + ','  
  
  if (fieldGid == 'Audi' && objCheckbox.form.gidVw.value ==""){  
   document.getElementById('gidAudi').value = document.getElementById('gidAudi').value + objCheckbox.alt;  
  }  
  if (fieldGid == 'VW' && objCheckbox.form.gidVw.value ==""){  
   document.getElementById('gidVw').value = document.getElementById('gidVw').value + objCheckbox.alt;  
  }  
 }else{  
  objCheckbox.form.choosenCar.value = objCheckbox.form.choosenCar.value.replace(eval("/"+objCheckbox.value+",/g"), "");  
  
  if (fieldGid == 'Audi'){  
   document.getElementById('gidAudi').value = document.getElementById('gidAudi').value.replace(eval(objCheckbox.alt), "");  
  }  
  if (fieldGid == 'VW'){  
   document.getElementById('gidVw').value = document.getElementById('gidVw').value.replace(eval(objCheckbox.alt), "");  
  }  
 }  
}  

  1. hallo,

    schau dir mal diesen Thread an.

    Gruß plan_B

    1. hallo,

      Danke schon Mal, aber das hilft mir überhaupt nicht, da es sich bei meinem Skript um String handelt und nicht Interger bzw. Number, die ich
      addieren muss.

      Bei mir handelt es sich um Nummern die sich als String zusammen fügen lassen.

      Danke und Gruß
      Messmar

    2. Hi,

      ich habe jetzt das Skript vom Struppi von dem Tread genommen und für String-Ausgabe angepasst. Das Problem bleibt immer das gleiche.

      Wenn der User beide Checkboxen mit dem Value: "vvvvvv" aktiviert, dann brauche ich in dem Value des Textfeldes: "summe" nur einmal:"vvvvvv"
      und nicht zwei mal:"vvvvvvvvvvvv", und auch nicht: "bbbbbbvvvvvvvvvvvv" oder: ""vvvvvvbbbbbbvvvvvv.

      Wie erreiche ich das dann? Danke und Gruß
      Mssmar

      Das angepasste Skript:

        
      <form name="myForm" action="save.asp" method=post>  
      <input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="vvvvvv">  
      <input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="bbbbbb">  
      <input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="vvvvvv">  
      <input type=text name="result" readOnly>  
      </form>  
        
      <script type="text/javascript">  
      function addition(el){  
        
       var summe = ""; // Anfangsbetrag  
       var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen  
       for(var i = 0; i < liste.length; i++) summe += liste[i].checked ? liste[i].value  : "";  
       el.form.result.value = summe;  
      }</script>  
      
      
      1. Wenn der User beide Checkboxen mit dem Value: "vvvvvv" aktiviert, dann brauche ich in dem Value des Textfeldes: "summe" nur einmal:"vvvvvv"
        und nicht zwei mal:"vvvvvvvvvvvv", und auch nicht: "bbbbbbvvvvvvvvvvvv" oder: ""vvvvvvbbbbbbvvvvvv.

        D.h. du willst einen mehrfach vorhanden Wert max. einmal haben, da bietet es sich an ein Objekt als assoziatives Array zu verwenden.

        function addition(el){  
          
         var summe = {}; // Anfangsbetrag  
         var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen  
         for(var i = 0; i < liste.length; i++) if(liste[i].checked) summe[liste[i].value] = 1;  
         var join = '';  
         for(var a in summe) join += a;  
         el.form.result.value = join;  
        }  
        
        

        Struppi.

        1. Hi Struppi,

          D.h. du willst einen mehrfach vorhanden Wert max. einmal haben, da bietet es sich an ein Objekt als assoziatives Array zu verwenden.

          Genau das habe ich gesucht. Vielen Dank.
          Ich habe einfach mein Problem nicht gut beschreiben können.

          Gruß
          Messmar