我有一個這樣的形式(從控件模板)Ajax調用:值窗體的字段使用道場
'<div>' +
' <form data-dojo-type="dijit.form.Form" data-dojo-attach-point="form" method="POST"> ' +
' <label for="${id}_workspace">Workspace name</label> ' +
' <input name="workspace" id="${id}_workspace" data-dojo-attach-point="workspace" data-dojo-type="app.ValidationWorkspace" />' +
' <label for="${id}_password1">Password</label> ' +
' <input name="password[0]" id="${id}_password1" data-dojo-attach-point="password1" data-dojo-type="app.ValidationPassword" />' +
' <label for="${id}_password1">Confirm password</label> ' +
' <input name="password[1]" id="${id}_password2" data-dojo-attach-point="password2" data-dojo-type="app.ValidationPassword" />' +
' <input type="submit" data-dojo-attach-point="button" data-dojo-type="app.BusyButton" label="Create!" />' +
' </form>' +
'</div>',
在代碼中,我寫道:
data = {};
data.workspace = that.workspace.get('value');
data.password = [];
data.password[0] = that.password1.get('value');
data.password[1] = that.password2.get('value');
// Store the data
g.stores.workspacesAnon.put(data).then(
function(res){
console.log("Jsonrest put(data) returned OK: " + json.toJson(res));
that.button.cancel();
}
);
兩個實際問題:
如果我使用that.form.value.email而不是that.password1.get( '值'),有時過時的值提交表格(!)。例如,如果我在password2字段中鍵入內容並立即輸入,則實際提交是針對Dojo中的預期發生的?它怎麼會發生?
有沒有更好的方法來獲取表單的值,以便'password [0]'和'password [1]'自動成爲一個數組等等?
感謝您的回答!但是......'formWidget.getValues()'不會創建一個對象,其中'password [0]'和'password [1]'被合併到一個名爲'password'的好數組中,並帶有兩個元素!有沒有簡單的方法來做到這一點? – Merc 2012-08-06 00:52:26
(請記住,我正在保存一個商店:'workspacesAnon.put(data)'所以'data'需要是一個「正常」的數組!) – Merc 2012-08-06 01:05:41
啊我錯過了這個事實,你實際上並沒有自己調用XHR ,是的。在這種情況下,在你的'input name = pass'中輸入NO [0-1-2]並使用dojo.formToJson(參見http://jsfiddle.net/seeds/pnMz6/) – mschr 2012-08-06 10:24:45