如何确定Dart中的输入类型?

时间:2013-05-14 19:26:46

标签: dart html-input dart-html

我想找到表单上的所有单选按钮,并单独保留其他输入类型。我的代码如下所示:

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

3 个答案:

答案 0 :(得分:4)

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

List<RadioButtonInputElement> list = element.querySelectorAll("input[type='radio']");

答案 1 :(得分:2)

可以理解的是,您似乎认为RadioButtonInputElementInputElement的子类。事情实际上或多或少地反过来:InputElement实现RadioButtonInputElement。当您记住input元素(以其各种形式)仍为input元素时,这实际上是有意义的,并且它的type属性可以区分其外观和行为。

正如您所发现的,所有input元素因此(is运算符)与InputElement实现的所有接口匹配:input type="radio"将与ButtonInputElement匹配,inputtype="button"匹配RadioButtonInputElement。它们都是InputElements并且满足两个接口。

正如您还发现的那样(在您的回答中),解决方案是测试type的{​​{1}}字段:

InputElement

我觉得这个解释是有道理的,所以尽管你已经找到了解决方案,但我还是添加了这个答案。

答案 2 :(得分:0)

我最终改变了测试:

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