如何将dart中的html表单序列化为提交字符串

时间:2013-12-29 17:03:18

标签: forms serialization dart dart-html

在jQuery中,有一个序列化表单元素的函数,例如我可以将它作为ajax请求提交。

假设我们有一个这样的表格:

<form id="form">
 <select name="single">
  <option>Single</option>
  <option selected="selected">Single2</option>
 </select>

 <input type="checkbox" name="check" value="check1" id="ch1">
 <input name="otherName" value="textValue" type="text">
</form>

如果我在jquery

的帮助下这样做
var str = $( "form" ).serialize();
console.log(str);

结果将是

single=Single2&check=check1&otherName=textValue

在dart的FormElement中是否有这样的功能,或者我必须自己编写代码?感谢。

2 个答案:

答案 0 :(得分:3)

我提出了我自己的简单解决方案,可能并不适用于所有情况(但对我来说这是工作)。程序是这样的:

  1. 首先,我们需要从表单中提取所有输入或选择元素名称和值到Dart的Map中,因此元素名称将是键并对值进行赋值(例如{'single':'Single2'})。
  2. 然后我们将遍历此Map并手动创建结果字符串。
  3. 代码可能如下所示:

    FormElement form = querySelector('#my-form'); // To select the form
    Map data = {};
    
    // Form elements to extract {name: value} from
    final formElementSelectors = "select, input";
    
    form.querySelectorAll(formElementSelectors).forEach((SelectElement el) {
      data[el.name] = el.value; 
    });
    
    var parameters = "";
    
    for (var key in data.keys) {
      if (parameters.isNotEmpty) {
        parameters += "&";
      }
      parameters += '$key=${data[key]}';
    }
    

    参数现在应包含指定表单中的所有{name:value}对。

答案 1 :(得分:1)

我还没有见过这样的东西。

this example中,Seth Ladd使用Polymers模板将表单字段值分配给一个被序列化的类。