2012-11-01 12 views

Odpowiedz

8

Powiedzmy mamy kod HTML z mniej więcej tak:

<form > 
     <input type="radio" name="gender" id="gender_male" value="male">Male<br> 
     <input type="radio" name="gender" id="gender_female" value="female">Female 
    </form> 

    <form> 
     <input type="checkbox" id="baconLover">I like bacon<br> 
    </form> 

Twój kod Dart w celu uzyskania ich wartości byłoby coś jak poniżej, ja również dodać zdarzenie wiedzieć, kiedy pole jest kliknięty .

import 'dart:html'; 

void main() { 

    // Adds a click event when the checkbox is clicked 
    query("#baconLover").on.click.add((MouseEvent evt) { 
    InputElement baconCheckbox = evt.target; 

    if (baconCheckbox.checked) { 
     print("The user likes bacon"); 
    } else { 
     print("The user does not like bacon"); 
    } 

    }); 

    // Adds a click event for each radio button in the group with name "gender" 
    queryAll('[name="gender"]').forEach((InputElement radioButton) { 
    radioButton.onclick.listen((e) { 
     InputElement clicked = e.target; 
     print("The user is ${clicked.value}"); 
    }); 
    }); 

} 
+0

Czy to się zepsuje, jeśli użytkownik przejdzie do elementu sterującego za pomocą klawisza tabulacji, a następnie wybierze go za pomocą klawisza spacji? (Edycja, zaskakująco: Nie, nadal działa) –

+0

@ Günter Musiałem zmienić "radioButton.on.click" na "radiobutton.onClick", ale wydaje się, że nie ma metody add() w API. Również powinno "zmieniono" InputElement "na" RadioButtonInputElement "? –

+1

To jest stare API. Zaktualizowałem kod. –

1

znalazłem this solution dla przycisku radiowego, gdzie zdarzenie złapać przez „html” ... Użyłem tego roztworu do mojego projektu.

my_example.html

<polymer-element name="my-example"> 
    <template> 
    <div on-change="{{updateRadios}}"> 
     Your favorite color is: 
     <div> 
     <label for="red">Red <input name="color" type="radio" id="red" value="red"></label> 
     </div> 
     <div> 
     <label for="green">Green <input name="color" type="radio" id="green" value="green"></label> 
     </div> 
     <div> 
     <label for="blue">Blue <input name="color" type="radio" id="blue" value="blue"></label> 
     </div> 
    </div> 
    <div> 
     You selected {{favoriteColor}} 
    </div> 
    </template> 
    <script type="application/dart" src="my_example.dart"></script> 
</polymer-element> 

my_example.dart

import 'package:polymer/polymer.dart'; 
import 'dart:html'; 

@CustomTag('my-example') 
class MyExample extends PolymerElement { 
    @observable String favoriteColor = ''; 

    MyExample.created() : super.created(); 

    void updateRadios(Event e, var detail, Node target) { 
    favoriteColor = (e.target as InputElement).value; 
    } 

} 
Powiązane problemy