Мне кажется, я справился со сложными вещами. У меня есть форма с 2 фильтрами выбора полей. Первый заполняется жестко закодированным массивом из 3 значений (позже он станет динамическим). Когда я выбираю значение, я вызываю json-rpc, захожу в свою базу данных и возвращаю мне значения, которые я хочу для второго поля. Думайте об этом как о стране, выбранной США - база данных возвращает только американские города для заполнения второго поля.
Это мой Javascript для заполнения второго текстового поля:
function category_changed()
{
var store = directoryBroker.getSubCategorys(document.getElementById('categoryId').value);
store.addCallback(
function (response)
{
var result = dojo.eval("(" + response + ")");
if (typeof(result)!='undefined')
{
document.getElementById('subCategoryId').disabled = false;
document.getElementById('subCategoryId').value = result[0].id;
}
}
);
}
Это php для создания формы:
$category = new Zend_Dojo_Form_Element_FilteringSelect('categoryId');
$category
->addMultiOption('a', '-- Please Select --')
->addMultiOptions($directoryModel->getAllCategorysForSelect())
->setValue('a')
->setRequired(true)
->setAttribs(
array(
'style' => 'width: 400px',
'onchange' => 'JavaScript: category_changed();'
)
)
->setLabel("Category:")
->addFilter('StringTrim')
->addValidator('int');
$subCategory = new Zend_Dojo_Form_Element_FilteringSelect('subCategoryId');
$subCategory
->addMultiOption('-1', '-- Select Category First --')
->setRequired(true)
->setAttribs(
array(
'disabled' => 'disabled',
'onchange' => 'JavaScript: subCategory_changed();',
'style' => 'width: 400px;'
)
)
->setLabel("Sub Category:")
->addValidator('int');
Я пробовал несколько разных способов установки значения, но оно, похоже, не изменится ... Объект результата выглядит следующим образом:
result[0] "[{"name":"Test1","id":"1"}]"
Все, что я хочу, это "Test1"
в качестве значения, я уверен, что это что-то простое, но просто не могу это увидеть!