JQuery Autocomplete给出了意想不到的结果

时间:2012-11-04 16:37:45

标签: jquery zend-framework autocomplete

希望有人可以帮助我。我在使用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小部件时,会发生同样的事情。

真的很困惑。任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

你应该调查Jquery自动完成!

$( "#selector" ).bind( "autocompletechange", function(event, ui) {
  ...Then perform all required actions
});