Radiobutton - Value auslesen

cuaro

Grünschnabel
Hi Leute.. Ich war grad auf der Suche nach einem geeigneten Forum für meine Frage.. Da bin ich bei euch gelandet :)

Ich muss dazu sagen, dass ich erst gerade versuche mich ein bischen mit der Materie zu beschäftigen.
Ein Arbeitskolleg hat mir hier Tips gegeben, wie ich mit Dojo ziemlich schnell und unkompliziert mein Vorhaben
gestalten kann..

Also hab ich mir aus dem Dojo-Campus ein Beispiel geholt und versucht das umzusetzen.. soweit sieht das ganze auch schick aus..
Jetzt wollte ich aber meinen Radiobutton von 2elementen auf 5 ausweiten und bekomme das Problem, dass ich bei unten stehendem Code (und push auf OK) immer nur entweder das erste Element oder das zweite als value zurück bekomme..
Also wenn ich "english" anklicke, kommt englisch.. bei allen weiteren Elementen kommt immer nur "german" zurück..

Kann mir jemand mal bitte auf den Code schauen und mir einen Tip geben, was ich falsch mache

Danke schonmal und beste Grüße aus Süddeutschland :)

Code:
<th width="450">
          <form id="sprache">
			<input type="radio" dojoType="dijit.form.RadioButton" name="lang" checked value="english" />
			<label>
				English
			</label>
			<input type="radio" dojoType="dijit.form.RadioButton" name="lang" value="german" />
			<label>
				German
			</label>
			<input type="radio" dojoType="dijit.form.RadioButton" name="lang" value="french" />
			<label>
				French
			</label>
 			<input type="radio" dojoType="dijit.form.RadioButton" name="lang" value="spanish" />
			<label>
				Spanish
			</label>
			<input type="radio" dojoType="dijit.form.RadioButton" name="lang" value="portuguese" />
			<label>
				Portuguese
			</label>
          </form>
</th>
<th>
          <button onClick=" with(dojo.byId('sprache'))with(elements[0])with(elements[checked?0:1])
					document.getElementById('ex_iframe').src= value + '/' + dijit.byId('DateienSelect').attr('value') + '.html';return false">
			                           OK
	   </button>
</th>
 

Chef_De_Loup

Mitglied
Code:
with(dojo.byId('sprache'))with(elements[0])with(elements[checked?0:1])
Du fragst hier nur ab ob das Erste Element ausgewaehlt wurde und wenn ja dann nimm den Value des ersten sonst den value des zweiten Elements (Liste beginnt bei 0 daher ist 0 = erstes Element).
Du musst hier alle Elemente durchgehen und schauen welches ausgewaehlt wurde. Leider hab ich von dojo keine Ahnung und kann Dir da jetzt keine direkte Loesung geben. Aber im Grunde muesste es sowas sein:
Code:
for (var i=0; i<5; i++)
  if (element.checked)
     // hier dein code fuer die Ausgabe des gewaehlten Elementes

Frag mal Deinen Kollegen wie man das da umsetzt.
 

cuaro

Grünschnabel
Frag mal Deinen Kollegen wie man das da umsetzt.

Jo, wollte ich eigentlich, aber der is ne ganze Weile nicht mehr da und ich möchte das ding schnellstmöglich fertig bekommen :)
über ne for-schleife komm ich hier irgendwie nich ganz weiter..
Hat evt. jemand ahnung von dem Dojo-Dingens und kann etwas dazu sagen ?

DANKE vielmals :)
 

Quaese

Moderator
Moderator
Hi,

du könntest über das registry-Objekt und dessen Methode filter die benötigten Widgets (name=lang) ermitteln. Mit der Methode forEach iterierst du über die zurückgelieferte "Nodelist" und prüfst die gewünschte Eigenschaft.
Code:
<button onclick="dijit.registry.filter(function(w, i){ return (w.name == 'lang');}).forEach(function(w){ w.attr('checked')?alert(w.value):null;}); return false">

Sollen komplexere Anweisungen ausgeführt werden, bietet es sich an, das Ganze in eine Funktion zu packen.

Ciao
Quaese