1

我想找到表单上的所有单选按钮,而别管其他输入类型。我的代码如下所示:

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

这会导致除select被识别为单选按钮之外的所有输入类型。事实上,如果我elthen分支中查看(“得到单选按钮”),它总是报告为InputElement.

4

3 回答 3

4

您还可以编写一个查询选择器以仅返回单选按钮。

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

很容易理解,您似乎假定这RadioButtonInputElementInputElement. 事情实际上或多或少是相反的:InputElement实现RadioButtonInputElement。这实际上是有道理的,因为您记得input元素,无论其各种形式,仍然是一个input元素,并且它的type属性区分了它的外观和行为。

正如您所发现的,input因此所有元素都匹配(使用is运算符)所有实现的接口InputElementinputwithtype="radio"将匹配ButtonInputElement,就像inputwithtype="button"将匹配一样RadioButtonInputElement。它们都InputElements满足两个接口。

正如您还发现(在您的回答中),解决方案是测试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 回答