2014-04-29 2 views
0

Я новичок в додзё, и я слежу за учебники упомянутые здесь http://dojotoolkit.org/reference-guide/1.7/dijit/Dialog.htmlDojo - как сохранить содержимое диалогового

Я не уверен, как захватить данные, введенные в диалоговом окне

<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> 

Диалог всплывает. Но как я могу захватить данные, введенные в полях? Есть ли лучший способ сделать это?

ответ

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 виджете, который позволяет получить/установить значение формы, проверить форму и представить его также.

+0

Работает идеально. Благодаря :) – Coder

Смежные вопросы