2009-07-29 11 views
1

Ich benutze YUI 3, um jemanden auf "Alle auswählen" oder "Keine auswählen" klicken zu lassen und dann in der Auswahlbox alle Elemente auszuwählen bzw. alle abzuwählen. Hier ist mein Code:Javascript Selectbox Refresh notwendig in YUI 3, wenn keine ausgewählt?

// This selects all 
    Y.on('click',function (e) { 
      selectBoxNode.get("options").each(function() { 
       this.removeAttribute('selected'); 
       this.setAttribute('selected','selected'); 
      }); 
     }, selectAllNode 
    ); 

// This selects none 
    Y.on('click',function (e) { 
      selectBoxNode.get("options").each(function() { 
       this.setAttribute('selected','false'); 
       this.removeAttribute('selected'); 
      }); 
      selectBoxNode.('selectedIndex',-1); 
     }, selectNoneNode 
    ); 

selectAllLink, selectNoneLink und selectBoxNode sind selbstverständlich, richtig zurück Knoten. Update: selectAll funktioniert, ich musste das Attribut 'selected' manuell entfernen und neu hinzufügen.

Der selectNoneLink funktioniert nicht: er hebt nur die Elemente auf, die vorher nicht ausgewählt waren ... obwohl die DOM-Prüfung zeigt, dass das selectedIndex-Attribut tatsächlich auf -1 geändert wurde, braucht es vielleicht eine Aktualisierung?

Jede Hilfe wäre willkommen. Wenn dies in allen Frameworks passiert, wäre das auch gut zu wissen.

Danke!

Antwort

1

Das funktionierte für mich.

YUI().use('node', function(Y) { 
    Y.get('#unsel').on('click', function(e) { 
    Y.get('select').get('options').set('selected',false); 
    }); 
    Y.get('#sel').on('click', function(e) { 
    Y.get('select').get('options').set('selected', true); 
    }); 
}); 
+0

Danke, es hat wunderbar funktioniert. Ich denke, die Fehler kamen von dem Versuch, diese.removeAttribute ("ausgewählt") auf "Optionen", die nicht ausgewählt wurden, aber sie wurden nicht berichtet, so Zeug funktioniert nur nach ein paar Klicks. Danke noch einmal! – ash

+0

Froh, es hat funktioniert. – seth