希望有人可以帮助我。我在使用JQuery自动完成小部件在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一个doctrine结果集,然后在一个viewscript装饰器中显示该表单。这工作正常,正如我所说,当我开始输入值时显示列表。在我看来,我有一些dojo javascript在自动完成元素的change事件上执行,如下所示:
<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>
如您所见,脚本将change事件连接到一个显示带有automplete元素值的警告框的函数。问题是它显示的值始终是我输入的字母,而不是我从列表中选择的值。
BTW,当我使用JQuery javascript以及直接在我的视图中使用JQuery UI小部件时,会发生同样的事情。真的很困惑。任何帮助将不胜感激。谢谢
答案 0 :(得分:1)
你应该调查Jquery自动完成!
$( "#selector" ).bind( "autocompletechange", function(event, ui) {
...Then perform all required actions
});