【问题标题】:How to check if InputElement is a checkbox in Dart如何检查 InputElement 是否是 Dart 中的复选框
【发布时间】:2015-05-27 08:39:02
【问题描述】:

我在 dart:html 中将一些表单序列化为 JSON

Map jsonifyForm(String formQuery){

  FormElement form = querySelector(formQuery);

  Map<String, String> data = {};

  List<InputElement> inputs = form.querySelectorAll("input.json");
  for (InputElement input in inputs) {

    if (input is CheckboxInputElement){
      print("checkbox: " + input.name + "|" + input.checked.toString());
      data.putIfAbsent(input.name, () => input.checked);
    } else {
      print("text: " + input.name + "|" + input.value);
      data.putIfAbsent(input.name, () => input.value);
    }
  }

  print(data);
  return data;
}

我在页面上有大约 100 个输入字段,后面只有一个复选框:

<label>First Name</label>
<input type="text" class="form-control tip json" placeholder="First Name" name="firstName" value="" data-toggle="tooltip" data-placement="top" title="First Name"/>


<label>Last Name</label>
<input type="text" class="form-control tip json" placeholder="Last Name" name="lastName" value="" data-toggle="tooltip" data-placement="top" title="Last Name"/>

...

<label class="form-control tip" data-placement="top" title="VAT On Goods" data-toggle="tooltip">
<input class="json" type="checkbox" name="vatOnGoods">
VAT on goods
</label>

当我调用 jsonifyForm 时,我看到所有输入都被视为复选框:

checkbox: firstName|false
checkbox: lastName|false
...
checkbox: vatOnGoods|false

{firstName: false, lastName: false, ..., vatOnGoods: false}

这是一个错误还是我在这里做错了什么?

【问题讨论】:

标签: html json dart dart-html


【解决方案1】:

CheckboxInputElement 类仅提供valuechecked 属性。我仍然想知道为什么它说这些都是复选框。但是你可以只检查type 属性:

if(input.type == 'checkbox')

检查复选框的类型。

【讨论】:

  • 是的,我认为你应该这样做。因为 InputElements 并不清楚 CheckBoxElements :) 也许是因为它使用了工厂构造函数,因为它只创建了一个 InputElement
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多