1

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

真的很迷茫。任何帮助将不胜感激。谢谢

4

1 回答 1

1

您应该调查 Jquery 自动完成功能!

$( "#selector" ).bind( "autocompletechange", function(event, ui) {
  ...Then perform all required actions
});
于 2012-11-05T12:13:46.487 回答