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 をドクトリンの結果セットとして使用すると、フォームがビュースクリプト デコレーターに表示されます。これは正常に機能し、前述のように、値の入力を開始するとリストが表示されます。私の見解では、オートコンプリート要素の変更イベントで次のように実行される 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