Dojo对话框 - 如何保存对话框的内容

时间:2014-04-29 06:01:58

标签: javascript dojo

我是dojo的新手,我一直在关注这里提到的教程 http://dojotoolkit.org/reference-guide/1.7/dijit/Dialog.html

我不确定如何捕获在对话框中输入的数据

<script type="text/javascript">
 require(["dojo/ready", "dijit/Dialog", "dijit/form/Button"], 

  function(ready, Dialog, Button){
    ready(function(){
        var myDialog = new Dialog({
            title: "Add",
            style: "width: 600px"
        });

        var myButton = new Button({
            onClick: function(){
                myDialog.set("content", getDialog());
                myDialog.show();
            }
        }, "progbutton");
    });
});

function getDialog(){
  return document.getElementById('add-link-dialog-container').innerHTML;
}


</script>

HTML:

  <div id="add-link-dialog-container" style="display:none;"> 
        <div>
           <table class="dijitDialogPaneContentArea">
             <tr>
              <td><label for="name">Name:</label></td>
              <td><input data-dojo-type="dijit/form/TextBox" name="name" id="name" value="Test"/></td>
             </tr>
             <tr>
               <td><label for="address">Address:</label></td>
               <td><input data-dojo-type="dijit/form/TextBox" name="address" id="address"/></td>
             </tr>
            </table>

           <div class="dijitDialogPaneActionBar">
               <button dojoType="dijit.form.Button" type="submit" id="ok">Add</button>
               <button dojoType="dijit.form.Button" type="button" id="cancel">Cancel</button>
           </div>
         </div> 
       </div>
       <button id="progbutton" type="button">Add New</button>

弹出对话框。但是如何捕获字段中输入的数据? 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

如果正在打开对话框,那么您应该能够使用dijit/registry模块来检索表单字段(以及您的值/数据)。

例如:

require([ "dijit/registry" ], function(registry) {
    registry.byId("ok").on("click", function() {
        registry.byId("address").get("value"); // Will return the "address" value
    });
});

当然,问题是,您何时将onClick事件处理程序添加到按钮中。您必须等到对话框加载,直到您可以向其添加事件处理程序。好的,dijit/Dialog有一个名为onLoad的事件我们可以使用。

例如:

myDialog.on("load", function() {
    registry.byId("ok").on("click", function() {
        registry.byId("address").get("value"); // Will return the "address" value
    });
});

但是,如果您对提交所有表单数据感兴趣,则应该查看dijit/form/Form小部件,它允许您获取/设置表单值,验证表单并提交表单