【问题标题】:How to obtain inputs within dijit/form/Form?如何在 dijit/form/Form 中获取输入?
【发布时间】:2013-09-17 12:49:40
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 您是使用原生表单元素(只是普通输入元素)还是dijit/form 元素(如dijit/form/TextBox,...)?
  • 我在表单中的输入都是 dijit 小部件。

标签: javascript forms dojo submit dijit.form


【解决方案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"); 
});

可以在here 找到一个示例 JSFiddle。


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

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

【讨论】:

  • 嘿,@Dimitri M 我非常感谢您非常有帮助的回答。是的,我通过您的回答解决了我的问题。谢谢!!!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2013-09-21
    • 2022-10-05
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多