希望可以有人帮帮我。我在让 JQuery Autocomplete 小部件在 Zend Framework 中正常工作时遇到了很多问题。当我开始输入时,我已经设法让自动完成显示并弹出一个项目列表,但是当我从弹出列表中选择一个选项时,自动完成的值不会更改为我选择的项目,而是更改为我实际从键盘输入的文本。我确定我可能在做一些愚蠢的事情,但我似乎无法弄清楚。任何帮助将不胜感激。
自动完成以如下形式创建
$partner_name = new ZendX_JQuery_Form_Element_AutoComplete('unit_name', array(
'label' => 'Partner Name:',
'required' => true,
));
$partner_name->setRequired(true)
->addValidator("NotEmpty", true,
array('messages'=>'The Partner Name field cannot be empty'));
$partner_name->setJQueryParam('data', array_values($partner_options));
$partner_name->setDecorators(array('UiWidgetElement', 'Errors'));
$this->addElement($partner_name);
使用 $partner_options 一个学说结果集,然后将表单显示在 viewscript 装饰器中。这很好用,正如我所说,当我开始输入值时会显示列表。在我看来,我有一些在自动完成元素的更改事件上执行的 dojo javascript,如下所示:
<script type="text/javascript" src="<?= $this->baseUrl('/js/dojo-release-1.7.2/dojo/dojo.js')?>"
data-dojo-config="async: true, parseOnLoad:true"></script>
<script>
require(["dijit/registry", "dijit/Dialog"], function (registry, dom)
{
dojo.connect(dojo.byId('unit_name'), "change", function(evt) {
alert(dojo.byId('unit_name').value);
});
});
</script>
如您所见,该脚本将更改事件连接到一个函数,该函数显示一个带有自动完成元素值的警报框。问题是它显示的值始终是我输入的字母,而不是我从列表中选择的值。
顺便说一句,当我使用 JQuery javascript 以及直接在我的视图中使用 JQuery UI 小部件时,也会发生同样的事情。
真的很迷茫。任何帮助将不胜感激。谢谢