如何使用 Dojo 提交带有 dijit.form.Form 的帖子数据?

Posted

技术标签:

【中文标题】如何使用 Dojo 提交带有 dijit.form.Form 的帖子数据?【英文标题】:How to submit post data with dijit.form.Form with Dojo? 【发布时间】:2011-01-30 17:07:54 【问题描述】:

我用javascript的工具包dojo把这个简单的表单变成了一个html元素表单:

dojo.require("dijit.form.Form");
dojo.require("dijit.form.ValidationTextBox");
dojo.require("dijit.form.Textarea");
dojo.require("dijit.form.Button");

dojo.addOnLoad(function() 
  var form = new dijit.form.Form(
    method: "POST",
    action: ""
  , "createCollectionForm");
  var title = new dijit.form.ValidationTextBox(
    required: true,
    trim: true
  , "title");
  var description = new dijit.form.Textarea(
    trim: true
  , "description");
  var submit = new dijit.form.Button(
    label: "OK",
    onClick: function(event) 
      dijit.byId("createCollectionForm").submit();
    
  , "submit");
);
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/resources/dojo.css" rel="stylesheet" />
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dijit/themes/claro/claro.css" rel="stylesheet" />
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js" djConfig="parseOnLoad:true"></script>
<body class="claro">
<form method="post" action="" enctype="application/x-www-form-urlencoded" id="createCollectionForm">
  <dl class="zend_form">
    <dt id="title-label"><label class="required" for="title">Title:</label></dt>
    <dd id="title-element">
      <input type="text" value="" id="title" name="title" gtbfieldid="1">
    </dd>
    <dt id="description-label"><label class="optional" for="description">Description:</label></dt>
    <dd id="description-element">
      <textarea cols="80" rows="24" id="description" name="description"></textarea>
    </dd>
    <dt id="submit-label">&nbsp;</dt>
    <dd id="submit-element">
      <input type="submit" value="OK" id="submit" name="submit">
    </dd>
  </dl>
</form>

但是当点击提交按钮时,表单提交没有任何发布数据

我做错了什么?

【问题讨论】:

【参考方案1】:

我认为问题在于您的 dijit 表单字段没有任何名称。我知道您已经在 html 代码中指定了名称,但我认为有必要将它们也包含在您的 dijit 调用中,否则提交不知道以什么名称发送表单数据。

例如:

var title = new dijit.form.ValidationTextBox(
    required: true,
    trim: true,
    name: "title"
, "title");

【讨论】:

非常感谢。在 dijit 中设置名称也解决了问题。 我们如何使用dojo ajax / dojo/request发布表单?

以上是关于如何使用 Dojo 提交带有 dijit.form.Form 的帖子数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏 dijit/form/button?

如何设置 dijit.form.radiobutton 只读模式

dojo / mvc / at不以约束datePattern的格式返回dijit / form / DateTextBox

Dojo 切换组合按钮

在Dojo Dijit中填充的依赖组合框?

dijit.form.Select 不会以编程方式设置值