我想找到表单上的所有单选按钮,并单独保留其他输入类型。我的代码如下所示:
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
。
答案 0 :(得分:4)
您还可以编写查询选择器以仅返回单选按钮。
List<RadioButtonInputElement> list = element.querySelectorAll("input[type='radio']");
答案 1 :(得分:2)
可以理解的是,您似乎认为RadioButtonInputElement
是InputElement
的子类。事情实际上或多或少地反过来:InputElement实现RadioButtonInputElement。当您记住input
元素(以其各种形式)仍为input
元素时,这实际上是有意义的,并且它的type
属性可以区分其外观和行为。
正如您所发现的,所有input
元素因此(is
运算符)与InputElement
实现的所有接口匹配:input
type="radio"
将与ButtonInputElement
匹配,input
与type="button"
匹配RadioButtonInputElement
。它们都是InputElements
并且满足两个接口。
正如您还发现的那样(在您的回答中),解决方案是测试type
的{{1}}字段:
InputElement
我觉得这个解释是有道理的,所以尽管你已经找到了解决方案,但我还是添加了这个答案。
答案 2 :(得分:0)
我最终改变了测试:
if ( el.type == 'radio' ) {
print ('got radio button');
}