2009-12-15 4 views
2

Когда я отправляю форму с помощью dojo.xhrPost, я получаю все поля в моей форме POSTED, за исключением значения моего dojox.CheckedMultiSelect, независимо от того, какие параметры выбраны.Значение dojox.CheckedMultiSelect не отправляется с dojo.xhrPost

Декларация моего CheckedMultiSelect:

<div dojoType="dojo.data.ItemFileReadStore" jsId="processTypeList" url="json/processtypelist.json.php"></div> 
<label for="processTypeSelect">Process Types</label> 
<select dojoType="dojox.form.CheckedMultiSelect" name="processTypeSelect" id="processTypeSelect" multiple="true" style="height:166px;" store="processTypeList"></select> 

А вот мой xhrPost:

<button dojoType="dojox.form.BusyButton" id="logSearchSubmit" busyLabel="Searching..." timeout="5" 
    onclick="dojo.xhrPost({ 
    url: 'handlers/logsearch.php', 
    form: dojo.byId('formSearch'), 
    handleAs: 'json' 
});">Search</button> 

И вот что я получаю публикуемую:

endDate 2009-12-15 
postAction search 
processSelect 
searchAttribute none 
searchAttributeValue  
startDate 2009-12-15 

причин, по которым dojox контрольное значение не публикуется, хотя все значения элементов управления dijit, которые являются частью моей формы, получают poste д? Контроль находится прямо между другими, значения которых получают POSTED, поэтому я знаю, что он находится в форме.

Я просто добавил еще одну кнопку для выполнения console.log(formSearch.getValues()) вместо xhrPost, и я получаю значение элемента управления, зарегистрированного в консоли. Поэтому очевидно, что dojo знает об этом, но когда я делаю console.log(dojo.formToJson("formSearch")), я снова получаю все данные формы, кроме управления dojox.

ответ

3

Я предполагаю, что это ошибка в CheckedMultiВыберите, что она не переносит атрибут 'name' из объявленной разметки на виджет скрытого выбора, который будет использоваться в форме submit. Виджеты dijit.form должны делать это довольно неуклюжим способом из-за некоторого поведения IE, вставляя ${nameAttrSetting} непосредственно в шаблон (CheckedMultiSelect.html) в элементе select. См. Пример dijit/form/templates/Button.html.

CheckedMultiSelect наследует от dijit, но ему необходимо реплицировать это исправление в свой собственный шаблон, поскольку он не может быть унаследован. Если это решение, пожалуйста, подумайте о представлении отчета и патча на bugs.dojotoolkit.org.

+0

Да, это похоже на это ... Скрытый выбор для элемента управления: '