1

フォーム上のすべてのラジオ ボタンを見つけて、他の入力タイプをそのままにしておきたいと思います。私のコードは次のようになります。

form.queryAll("select, input").forEach((Element el) {
  if (el is RadioButtonInputElement) {
     print ('got radio button');
  } else {
     print ('got some other input type');
  }
}

selectこれにより、ラジオ ボタンとして識別される以外のすべての入力タイプが生成されます。実際、elブランチthen(「取得したラジオ ボタン」) を見ると、常に として報告されInputElementます。

4

3 に答える 3

4

ラジオ ボタンのみを返すクエリ セレクタを作成することもできます。

List<RadioButtonInputElement> list = element.querySelectorAll("input[type='radio']");
于 2013-05-15T06:11:25.723 に答える
2

当然のことながら、あなたはそれRadioButtonInputElementが のサブクラスであると推測しているようですInputElement。実際には、多かれ少なかれ逆に機能します。InputElementはRadioButtonInputElementを実装します。inputこれは、さまざまな形式の要素が要素のままであり、その外観と動作を区別するのinputはその属性であることを思い出すと、実際には意味があります。type

あなたが発見したように、inputしたがって、すべての要素は、実装するisすべてのインターフェースと (演算子を使用して)一致します。それらは両方であり、両方のインターフェースを満たします。InputElementinputtype="radio"ButtonInputElementinputtype="button"RadioButtonInputElementInputElements

あなたも(あなたの答えで)発見したように、解決策はtypeあなたのフィールドをテストすることですInputElement

if (el.type == 'radio') {
  print('got radio button');
}

説明が正当だと感じたので、すでに解決策を見つけているにもかかわらず、この回答を追加します。

于 2013-05-14T21:11:13.417 に答える
0

私は最終的にテストを変更しました:

if ( el.type == 'radio' ) {
  print ('got radio button');
}
于 2013-05-14T19:52:01.083 に答える