如何在dijit / form / Form中获取输入?

时间:2013-09-17 12:49:41

标签: javascript forms dojo submit dijit.form

我正在使用dijit/form/Form来包含我的输入,然后在我尝试提交dijit/form/Form时遇到问题,当我在此表单中有提交按钮时,可以成功提交但重定向到另一个页面(Spring MVC充当服务器端),如果我删除此提交按钮,我不知道如何获取此表单的输入。

如果dijit/form/Form有任何方法可以获取其输入,以便我可以提交。

感谢。

2 个答案:

答案 0 :(得分:1)

dijit/form/Form包含一些与Dijit表单小部件(dijit/form/TextBoxdijit/form/Select,...)一起使用的实用程序。我不知道你是否使用它们,但无论有没有,答案都非常相似。这个想法是将表单分配给一个对象,并使用AJAX调用提交该表单。

使用Dijit表单小部件

如果您使用Dijit表单小部件,则可以使用表单小部件上的getValues()序列化整个表单。这将为您序列化表单:

xhr.post("mySubmitUrl", {
    data: registry.byId("myForm").getValues()
}).then(function() {
   console.log("Success"); 
});

我还做了一个JSFiddle来证明这一点。


使用原生表单元素

如果您使用的是原生表单元素,则无法使用dijit/form/Form。要序列化表单,您可以使用dojo/dom-form模块中的函数toObject()。此函数要求您传递表单DOM节点。

这意味着您可以传递dijit/form/Form窗口小部件的domnode,也可以完全跳过此部分,直接访问DOM节点。

xhr.post("mySubmitUrl", {
    data: domForm.toObject(registry.byId("myForm").domNode)
}).then(function() {
    console.log("Success"); 
});

可以找到一个示例JSFiddle here


现在在服务器端(Spring),您只需添加一个处理该特定请求的方法,例如:

@RequestMapping(value = "mySubmitUrl", method = RequestMethod.POST)
public void doPostForm(@RequestParam("name") String name, @RequestParam("firstname") String firstname) {
    // Do stuff
}

答案 1 :(得分:0)

您可以使用jquery ajax调用,在数据中可以传递JSON和成功和错误页面中的值,以检查成功是否按照您的要求加载块,如果超时或其他错误则出错