zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Select - Option disablen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.07.2008, 16:10
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.07.2008
Beiträge: 7
CorinG befindet sich auf einem aufstrebenden Ast
Standard Select - Option disablen

Hallo again,

ich bin leicht am verzweifeln:
Ich habe mehere <select>´s mit gleichem Inhalt. Wenn man einen anklickt soll überprüft werden, ob bei einem anderen eine Antwort ausgewählt ist und falls dies der Fall ist, diese Antwort disabled werden.

(Bsp: 3 DropDownMenüs mit folgenden options: "nicht besetzt", "Frank", "Hans", "Peter". Alle stehen anfangs auf "nicht besetzt". Beim 1. wird "Frank" ausgewählt. Bei einem Klick auf das 2. soll "Frank" disabled sein.)

Dazu hab ich folgendes geschrieben:
Code:
<select onfocus='setChoise(3, "Pos", 0);' class='name' id='Pos0'>  
  <option>nicht besetzt</option><option disabled>Ferdinand Cero</option> 
  <option disabled>Gerem</option> 
  <option disabled>Zykoi</option> 
  <option disabled>Bremer</option> 
  <option disabled>Juffi</option>  
</select><br> 

<select onfocus='setChoise(3, "Pos", 1);' class='name' id='Pos1'>  
  <option>nicht besetzt</option><option disabled>Ferdinand Cero</option> 
  <option disabled>Gerem</option> 
  <option disabled>Zykoi</option> 
  <option disabled>Bremer</option> 
  <option disabled>Juffi</option> 
</select><br> 

<select onfocus='setChoise(3, "Pos", 2);' class='name' id='Pos2'>  
  <option>nicht besetzt</option><option disabled>Ferdinand Cero</option> 
  <option disabled>Gerem</option> 
  <option disabled>Zykoi</option> 
  <option disabled>Bremer</option> 
  <option disabled>Juffi</option> 
</select><br>
Jedem Select wurde also eine JS-Function bei onfocus zugewiesen, doch dabei klappt was nicht. Ich weiß nicht ob es am falschen Event liegt oder am Script:
Code:
setChoise(AnzSelects, Position, myID)
  {
    var ID= Position + myID;
    var x = window.document.getElementById(ID);
    //Jedes Element (x.length)...
    for (i=0; i<x.length; i++)
    {
      //wird mit jedem anderen Select verglichen
      for (j=0; j<=AnzSelects; j++)
      {

        ID = Position + j;
        //falls es sich nicht um das eigene select handelt ...
        //UND die option =  selektierte auswahl eines anderen selects 
        if ((myID != i) AND (x.options[i] == document.getElementByID(ID).selectedIndex)) 
        {
          x.option[i].disabled = true;
        }
      }
    }
  }
Das Script ermittelt die Länge des aktiven Selects. Für jeden Eintrag wird eine Schleife durchlaufen, in der der Eintrag mit den selektierten Antworten, der anderen (abgesehen von einer Nummer) gleichnamigen Selects. Wenn der selektierte Wert = dem Eintrag ist und es sich nicht um das selbe Select handelt, soll der Eintrag disabled werden.

Hoffe ich hab mich einigermaßen verständlich ausgedrückt.
Bin für jede Hilfe dankbar,
Corin

Geändert von CorinG (28.07.2008 um 16:13 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 28.07.2008, 20:49
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Ort: Bad Teinach bei Stuttgart
Beiträge: 5.002
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Du solltest den Event Handel onchange nehmen.
__________________
»Sich Sorgen machen ist wie ein Schaukelstuhl. Man ist zwar beschäftigt, aber man kommt nicht weiter.« - Van Wilder
»Ich bin nicht auf der Welt, um so zu sein, wie andere mich haben wollen.« - k. A.
»Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.« - Albert Einstein
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.07.2008, 00:30
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.07.2008
Beiträge: 7
CorinG befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Tip. Hab das JavaScript allerdings noch ein paar mal getestet und einige Fehler gefunden. Zudem hab ich irgendwie den Eindruck gewonne, es sei nicht möglich, mit JS die "options" zu disablen (kann aber auch gut sein, dass ich mich irre).

Ich bin dem Problem jetzt auf andere Weise aus dem Weg gegangen.
Danke trotzdem,
Corin
Mit Zitat antworten
  #4 (permalink)  
Alt 29.07.2008, 11:35
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Ort: Bad Teinach bei Stuttgart
Beiträge: 5.002
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Also onchange ist wichtig. Und deaktivieren geht auch.

Ist das eine Variable Anzahl von select-felder?
__________________
»Sich Sorgen machen ist wie ein Schaukelstuhl. Man ist zwar beschäftigt, aber man kommt nicht weiter.« - Van Wilder
»Ich bin nicht auf der Welt, um so zu sein, wie andere mich haben wollen.« - k. A.
»Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.« - Albert Einstein
Mit Zitat antworten
  #5 (permalink)  
Alt 29.07.2008, 11:50
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.07.2008
Beiträge: 7
CorinG befindet sich auf einem aufstrebenden Ast
Standard

genau: x.length ist für den Durchlauf der Einträge des aktiven Select-Felds.
AnzSelects ist die Anzahl der Selectfelder mit gleichen Einträgen.

"x.options[i] == document.getElementByID(ID).selectedIndex" ist falsch, da options[i] ein HTML Objekt ist und selectedIndex offensichtlich ein Index (Integer). Richtig wäre es denke ich so:
Code:
var Selected = document.getElementByID(ID).selectedIndex;
Selected = document.getElementByID(ID).options[Selected].value

if ((myID != i) AND (x.options[i].value == Selected)) 
{
  x.option[i].disabled = true;
}
Gruß,
Corin

Geändert von CorinG (29.07.2008 um 11:57 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 29.07.2008, 13:01
Benutzerbild von Timo
table-layout: none;
XHTMLforum-Kenner
 
Registriert seit: 11.11.2006
Ort: Bad Teinach bei Stuttgart
Beiträge: 5.002
Timo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein LichtblickTimo ist ein Lichtblick
Standard

Du müsstest den option auch einen value geben wenn du den abfragen willst
__________________
»Sich Sorgen machen ist wie ein Schaukelstuhl. Man ist zwar beschäftigt, aber man kommt nicht weiter.« - Van Wilder
»Ich bin nicht auf der Welt, um so zu sein, wie andere mich haben wollen.« - k. A.
»Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.« - Albert Einstein
Mit Zitat antworten
  #7 (permalink)  
Alt 29.07.2008, 13:57
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.07.2008
Beiträge: 7
CorinG befindet sich auf einem aufstrebenden Ast
Standard

meinst du <option ... value="bla"></option> ?
Wenn ja - das ist bereits der fall.
Mit Zitat antworten
  #8 (permalink)  
Alt 29.07.2008, 15:36
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.565
hemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig nett
Standard

Hallo,

hab mal ein kleines Beispiel mit Hilfe von jQuery gemacht. (finde die Syntax von jQuery einfach übersichtlichter)

Javascript (php-code wurde nur wegen des Syntax-Highlighting vewendet)
PHP-Code:
  $(document).ready(function(){
    $(
"select[@id*='Pos']").change(function(){
      $(
":disabled").removeAttr("disabled"); //Entfernt erstmal alle disabled-Attribute  
  
      
$(":selected").each(function(){
        var 
selected = $(this).val(); //Wert der selektierten Option        
        
$("option:contains('"+selected+"')").attr("disabled","disabled"); // Alle option-Elemente mit dem Wert von "selected" erhalten ein disabled-Attribut      
      
});      
    });
  }); 
Code:
<select class='name' id='Pos0'>  
  <option>nicht besetzt</option><option>Ferdinand Cero</option> 
  <option>Gerem</option> 
  <option>Zykoi</option> 
  <option>Bremer</option> 
  <option>Juffi</option>  
</select><br> 

<select class='name' id='Pos1'>  
  <option>nicht besetzt</option><option>Ferdinand Cero</option> 
  <option>Gerem</option> 
  <option>Zykoi</option> 
  <option>Bremer</option> 
  <option>Juffi</option> 
</select><br> 

<select class='name' id='Pos2'>  
  <option>nicht besetzt</option><option>Ferdinand Cero</option> 
  <option>Gerem</option> 
  <option>Zykoi</option> 
  <option>Bremer</option> 
  <option>Juffi</option> 
</select><br>
Demo:
http://xhtmlforum.de/test_docs/jquery/select.html
__________________
http://twitter.com/xhtmlforum - XHTMLforum - Infos bei Serverausfall, Wartungsarbeiten etc.
Mit Zitat antworten
  #9 (permalink)  
Alt 29.07.2008, 16:45
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.565
hemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig netthemfrie ist einfach richtig nett
Standard

Das ganze wird übrigens nicht im IE7 funktionieren. Das Attribut "disabled", dass einem option-tag zugeordnet wird, hat dort keinerlei Wirkung.
__________________
http://twitter.com/xhtmlforum - XHTMLforum - Infos bei Serverausfall, Wartungsarbeiten etc.
Mit Zitat antworten
  #10 (permalink)  
Alt 29.07.2008, 19:26
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.07.2008
Beiträge: 7
CorinG befindet sich auf einem aufstrebenden Ast
Standard

Hej hemfrie,
Vielen Dank für deine Hilfe - klappt ausgezeichnet! Für das Problem mit dem IE hatte ich auf Daniel Tome´s Blog ein Workaround gefunden.

Nochmals Danke und freundliche Grüße,
Corin
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2x select boxen sollen option tauchen.(Javascript) Don Roberto Javascript & Ajax 4 28.12.2009 21:01
Jquery Select und Option 123merlin Javascript & Ajax 0 19.11.2009 18:58
Problem mit select option phplerin Serveradministration und serverseitige Scripte 10 03.02.2009 17:18
jQuery: Select option und click Sonny Lane Javascript & Ajax 3 17.12.2008 10:09
Select und Option -> Ich finde den Fehler nicht smiley (X)HTML 2 12.04.2006 02:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.