使用ajax调用的Dojo filteringselect -如何用返回值填充选择框
dojo filteringselect with ajax call - how to populate select box with returned values
我想我已经把困难的事情做完了。我有一个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"
的值,我相信这是简单的东西,但只是看不到它!
我认为你需要做的是将调用更改为
document.getElementById('subCategoryId')
转换为一个调用,该调用检索实际dijit小部件的实例:
var secondaryFilteringSelect = dijit.byId('subCategoryId');
document.getElementById
和dojo.byId
只返回元素的物理dom节点,而不是实际的javascript小部件对象。您想使用dijit.byId
代替。
然后,使用该小部件,您可以使用该小部件的set
函数来设置其属性
secondaryFilteringSelect.set('disabled', false);
secondaryFilteringSelect.set('value', result[0].id);
查看FilteringSelect API文档获取更多信息。
此外,为了根据第一个菜单中的更改向FilteringSelect添加新选项,您可能需要查看FilteringSelect的继承方法addOption相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 如何用JavaScript处理SQLite中snippet()的返回值
- 如何用jquery捕获返回值
- 如何用Angularjs显示函数的返回值
- 使用ajax调用的Dojo filteringselect -如何用返回值填充选择框