2012-11-01 13 views

risposta

8

Diciamo che abbiamo il codice HTML con qualcosa di simile:

<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> 

Il codice Dart per ottenere i loro valori sarebbe qualcosa come il seguente, ho anche aggiunto un evento per sapere quando la casella di controllo viene cliccato .

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

Si interrompe se l'utente naviga verso il controllo con il tasto tab, quindi lo seleziona usando lo space key? (Modifica, sorprendentemente: No, funziona ancora) –

+0

@ Günter Ho dovuto cambiare 'radioButton.on.click' in' radiobutton.onClick', ma nell'API non sembra esserci alcun metodo add(). Dovrebbe anche essere modificato "InputElement" in "RadioButtonInputElement"? –

+1

Questa è una vecchia API. Ho aggiornato il codice. –

1

ho trovato this solution per pulsante, dove l'evento di cattura da parte "html" ... Ho usato questa soluzione nel mio progetto.

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; 
    } 

} 
Problemi correlati